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

代码如下:1.
varobject={
getName:function(){
returnfunction(){
returnthis.name//通过call方法设置了全局变量
};
}
};
console.log(object.getName()());//undefined
2.
varobject={
getName:function(){
returnfunction(){
returnname
};
}
};
console.log(object.getName()());//ReferenceError:nameisnotdefined
问题来了,上面的两种方式,同是访问全局变量中的name,为什么得到的结果却不一样?
已解决:github上有对这个问题的详细的解释:),谢谢各位
MM们
浏览 709回答 2
2回答

一只斗牛犬

第一个返回的是值是window对象的一个未赋值的属性,这个undefined是种数据类型。第二个是试图返回一个未定义的变量,这个根本不能称作全局变量。因为没有声明,解释器去内存中根本找不到name这个东西。js中允许在声明变量的时候不使用var(实质上没有声明变量,只不过是对window的属性赋值),但是这不代表你可以使用一个未经声明的变量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript