在JavaScript中,什么代码在运行时执行,哪些代码在分析时执行?

ran*_*ble 21 javascript runtime

特别是对象,我不明白对象的哪些部分在初始化之前运行,什么在初始化时运行以及什么时候运行.

编辑:似乎parsetime是错误的单词.我想我应该制定一个问题"在2遍读取中,第一遍读取什么,第二遍读取什么?"

Gar*_*eth 32

javascript文件以2遍读取方式运行.第一遍解析语法并收集函数定义,第二遍实际执行代码.通过注意以下代码可以看到这一点:

foo();

function foo() {
  return 5;
}
Run Code Online (Sandbox Code Playgroud)

但以下没有

foo(); // ReferenceError: foo is not defined

foo = function() {
  return 5;
}
Run Code Online (Sandbox Code Playgroud)

但是,这并不是很有用,因为第一遍中没有任何执行.您根本无法使用此功能来更改逻辑.

  • 知道它非常有用,因为我可以很容易地在第二个例子中编写代码而不理解为什么它不起作用.另外,我没有意识到第一次通过期间没有执行,所以你肯定会为我清理事情. (4认同)

SLa*_*aks 4

与 C++ 不同,不可能在 Javascript 解析器中运行逻辑。

我怀疑您是在询问哪些代码立即运行以及哪些代码在创建每个对象实例时运行。

答案是,您调用的函数中的任何代码只会在调用该函数时运行,而函数外部的任何代码都会立即运行。