在以下情况下,为什么不只使用let total
?我知道我们的目的是演示箭头功能如何解决this
难题,但是在现实世界中,我们是否有实际用例?
function sum() {
this.total = 0;
arr.forEach((item) => {
this.total+= item; // all is well `this` points to outer function
})
return this.total;
}
答案 0 :(得分:0)
在上述情况下,局部变量有意义。但是使用箭头功能的 this (词法作用域)具有更广泛的用途。
现在,您需要为项目使用框架,该框架包含所有组件。我们在组件级别具有变量,然后将其绑定到html。
class component {
constructor() {
this.data = {};
}
// lets say you bring data and have to assign to above this.data
getData() {
somePromise.then((res) => {
this.data = res // you can access parent. No this dra,a
})
}
}
但是如果功能正常
getData() {
const self = this; // save parent this to local variable
somePromise.then(function(res) {
self.data = res // now you can set data as function'this is different here
})
}
还有其他方法。您可以使用本机绑定函数将此匿名函数与此绑定,然后可以在匿名函数内部访问有效的 this 。
因此,在现实世界中,箭头功能很好地解决了这一难题。