我在第 163 行有以下内容:
this.setState(data)
然后在它的正下方我有这个:
(function(data){
setTimeout(() => {
// do some stuff
}, 5)
}).call(this, data)
当我注释掉后者时,一切正常。当我把它放在那里时,由于某种原因,我从第 163 行收到一个未定义的错误,说 this.setState 不是一个函数。
此外,当我简单地将第二个片段替换为
setTimeout(() => {
// do stuff
}, 5)
再次,它工作得很好(除了有时数据变量不是它应该的样子......但并不总是如此,很奇怪)。
这是怎么发生的?还没有执行的代码怎么能生成 this.setState
不明确的?我什至检查了调试器,并将其设置为抛出错误之前应该设置的值...我在这里遗漏了什么吗?
最佳答案
第二个代码块(IIFE)中的代码用括号括起来。前面有一个未结束的语句。因此,JS解释器会调用this.setState()
的结果这不是一个函数,会导致错误。
在 this.setState()
末尾添加分号应该可以解决。
this.setState();
关于javascript - 尚未执行的代码会影响其上方的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55092886/