用它来保存函数中的变量?

时间:2019-10-04 03:35:40

标签: javascript ecmascript-6

在以下情况下,为什么不只使用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;
} 

1 个答案:

答案 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

因此,在现实世界中,箭头功能很好地解决了这一难题。