{ ... }, 1000); // the arrow functi-6ren">
gpt4 book ai didi

javascript - 箭头函数中的 "this"与该箭头函数之外的 "that"中的 "var that = this"是否相同?

转载 作者:行者123 更新时间:2023-12-01 00:26:10 24 4
gpt4 key购买 nike

这是记住箭头函数内的 this 内容的简单规则吗?

var that = this;
setTimeout((a, b) => { ... }, 1000); // the arrow function (a, b) => { ... }

并且在该箭头函数内部,所有this都可以被视为与that相同。

这是一个简单的规则来记住它是如何工作的吗?

当然,如果箭头函数内部有任何常规的 ES5 函数,那么该 ES5 函数内部的 thisthat 不同,但会遵循旧的 ES5 方式。

更新:实际上,后来,我发现一种更好的思考方式可能是,将箭头函数想象为:

(function() { ... }).bind(this)

也就是说,该函数将当前的 this 拿走,即“词法 this”。

最佳答案

考虑箭头函数中的“this”的更好方法是它根本没有“this”变量,因此当您在箭头函数中引用“this”时,它的工作方式就像任何其他变量一样尚未在该范围中定义,因此,它会在范围中上升一级并查找“this”,如果没有找到它,则会在范围中上升另一级,直到找到声明的“this”或到达顶级范围。

因此箭头函数取决于词法 this。

关于javascript - 箭头函数中的 "this"与该箭头函数之外的 "that"中的 "var that = this"是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58973789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com