代码如下:1.varobject={getName:function(){returnfunction(){returnthis.name//通过call方法设置了全局变量};}};console.log(object.getName()());//undefined2.varobject={getName:function(){returnfunction(){returnname};}};console.log(object.getName()());//ReferenceError:nameisnotdefined问题来了,上面的两种方式,同是访问全局变量中的name,为什么得到的结果却不一样?已解决:github上有对这个问题的详细的解释:),谢谢各位
2 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
第一个返回的是值是window对象的一个未赋值的属性,这个undefined是种数据类型。第二个是试图返回一个未定义的变量,这个根本不能称作全局变量。因为没有声明,解释器去内存中根本找不到name这个东西。js中允许在声明变量的时候不使用var(实质上没有声明变量,只不过是对window的属性赋值),但是这不代表你可以使用一个未经声明的变量。
添加回答
举报
0/150
提交
取消