JavaScript return函数中的this指向问题

发布于 2022-09-12 23:02:15 字数 384 浏览 22 评论 0

题目描述

以下代码:
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

〆凄凉。 2022-09-19 23:02:15

obj.fn()()obj.fn()是不一样的,obj.fn()可以理解为obj调用它的fn函数,此时fn的调用者是obj,所以fn里的this指向obj,那么obj.fn()()呢,这是obj.fn()先返回一个函数,然后这个函数再调用,此时这个函数相当于是无主的,里面的this在非严格模式下指向window,严格模式下是undefined

橘味果▽酱 2022-09-19 23:02:15

https://developer.mozilla.org...
先阅读再思考一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文