为了账号安全,请及时绑定邮箱和手机立即绑定

this.name 与 name 访问全局变量的区别?

this.name 与 name 访问全局变量的区别?

MM们 2019-04-19 16:29:42
代码如下: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的属性赋值),但是这不代表你可以使用一个未经声明的变量。
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 708 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信