javascript - 尚未执行的代码会影响其上方的上下文

标签 javascript reactjs this

我在第 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/

相关文章:

JavaScript 全局变量未更新

javascript - typescript 错误 : Property 'children' does not exist on type '{ children?: ReactNode; }'

java - 在 Java 中转换 - (Parent) 这是什么意思?

jquery - 为什么 javascript "this"不能与 "each"一起使用?

javascript - 在Javascript中的切割词后 chop 字符串

javascript - 在javascript中如何动态获取对象的嵌套属性

javascript - 在 angularjs 中创建容器指令

reactjs - 如何在 React AG-grid 中获取固定行数据

node.js - 如何在 React 中显示组件并在每次显示时更新其生命周期?

javascript - JS 类 this 与事件监听器