尚未执行的代码影响其上方的上下文[重复]

问题描述 投票:0回答:1

第163行我有以下内容:

this.setState(data)

然后在它下面我有这个:

(function(data){
  setTimeout(() => {
    // do some stuff
  }, 5)
}).call(this, data)

当我评论后者时,一切正常。当我把它留在那里时,出于某种原因我得到了来自第163行的未定义错误,说this.setState不是一个函数。

当我简单地用第二个片段替换时

setTimeout(() => {
    // do stuff
  }, 5)

再次,它工作正常(除了有时数据变量不是它应该是的事实...但不总是,但很奇怪)。

这是怎么回事?如果尚未执行的代码如何使this.setState未定义?我甚至检查了调试器,这是设置为它应该是正确的,然后它抛出错误...我在这里错过了什么?

javascript reactjs this
1个回答
2
投票

第二个代码块(IIFE)中的代码用括号括起来。在它之前有一个未经终止的声明。因此,JS解释器将调用this.setState()的结果,该结果不是函数,从而导致错误。

this.setState()末尾添加分号应该可以解决它。

this.setState();

© www.soinside.com 2019 - 2024. All rights reserved.