关于箭头函数中this的指向问题?

作者站长头像
站长
· 阅读数 6

关于箭头函数中this的指向问题

    <script>
        function foo() {
            const test = () => {
                console.log(this)
            }
            test()
        }
        foo()
        let obj = {
            a: 1,
        }
        obj.foo = foo
        obj.foo()
    </script>

在箭头函数中,this引用的是定义箭头函数的上下文。示例代码按理来说应该打印两次window,但结果是一次window,一次obj。

问了好多个AI,AI给的结果都是打印两次window。

回复
1个回答
avatar
test
2024-07-03

箭头函数没有this,再箭头函数里面访问this,你可以当做是访问一个变量,当前作用域没有this,会向上层作用域进行查找。

test里面访问this,这个this是指向foo中的this,单独运行foo,foo的this指向window,使用obj.foo运行foo,foo的this指向obj

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容