为什么我的forEach中的this是未定义的?

时间:2019-12-23 08:29:16

标签: javascript foreach this undefined

解决方案可以在评论中找到,并且在这篇文章的底部,tldr问题出在源地图上

class Stepper {
    doSomething() {
        this.steps.forEach((step) => {
           // this is undefined here
        });
    }
}
  • 我在class
  • 所以我处于严格模式
  • 因此默认情况下,thisundefined
  • 但使​​用箭头功能调用
  • 因此,this应该链接到调用上下文
  • 并在调用上下文中定义了this(否则this.stepper.forEach会崩溃)

我知道我可以通过解决问题

class Stepper {
    doSomething() {
        this.steps.forEach((step) => {
           // this is defined here
        }, this);
    }
}

我不是要修复,而是要解释。

几个小时后更新

我已经找到错误的根源:)我正在检查调试器是否定义了this。一位同事告诉我尝试console.log并成功了!

长话短说,由Babel构建的源地图无法正常工作,因此我们对其进行了更新,现在可以在调试器中使用

感谢大家的宝贵时间

0 个答案:

没有答案