JavaScript return函数中的this指向问题
题目描述
以下代码:
var name = "林二二";
var obj = {
name: "林一一",
fn: function () {
var name = "小三";
return function () {
return this.name;
};
},
};
console.log(obj.fn()()); // 林二二
为什么输出是全局的name?
自己的思路
上面代码之所以输出全局下的name,是因为this指向了window
但是为什么它会指向window?
this不是应该指向调用它的调用者吗?
原因是因为它是匿名函数还是和‘return’的机制有关?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
obj.fn()()
和obj.fn()
是不一样的,obj.fn()
可以理解为obj调用它的fn函数,此时fn的调用者是obj,所以fn里的this指向obj,那么obj.fn()()
呢,这是obj.fn()
先返回一个函数,然后这个函数再调用,此时这个函数相当于是无主的,里面的this在非严格模式下指向window,严格模式下是undefinedhttps://developer.mozilla.org...
先阅读再思考一下