记住箭头功能中的this
是一个简单的规则吗?
var that = this;
setTimeout((a, b) => { ... }, 1000); // the arrow function (a, b) => { ... }
,并且在该箭头功能内,所有this
都可以视为与that
相同。
这是记住它如何工作的简单规则吗?
当然,如果箭头功能内有任何常规的ES5功能,则该ES5功能内的this
与that
不同,但将遵循旧的ES5方式。
更新:实际上,后来,我发现思考它的一种更好方法是,仅将箭头函数与以下内容相同:
(function() { ... }).bind(this)
也就是说,该函数将this
删除为“ lexical this”。
答案 0 :(得分:2)
在箭头函数中考虑“ this”的更好方法是,它根本没有“ this”变量,因此,当您在箭头函数中引用“ this”时,它的作用就像其他变量一样尚未在该范围中定义的对象,它将在该范围中上一层并查找“ this”,如果找不到它,则它将在该范围中上一层,直到找到一个“ this”声明为止或达到顶级范围。
因此,箭头功能取决于词汇this。