JavaScript代码的执行顺序是什么?

6

JavaScript代码是如何执行的?我的意思是按照什么顺序执行?如果我像这样声明一个函数,执行顺序会有所不同:

function render() {
    // Code here
}

改为:

var render = new function(){
    // Same code here
}    

无论是否由事件处理程序调用,JavaScript是否执行在脚本文件中定义的函数?(例如 onload = function())。

最后,如果一个函数在另一个函数中定义,当调用父函数时,下层函数也会被调用吗?例如

function a(){

    function b(){
        // code
    }

    function c(){
        //code
    }

}

我正在努力获得JavaScript中执行顺序的具体理解。

3个回答

4
var render = new function(){
  // same code here
}
new 关键字并不会创建一个新的 Function,而是通过运行函数创建一个新的对象。因此,这实际上会运行方法体并返回一个对象。
如果你想知道什么时候函数被解析并添加到作用域中,那么这取决于具体的实现,但所有函数都被提升到作用域的顶部,并在执行任何代码之前通常被解析。
只有在调用函数时调用 f(),才会执行函数。

4

函数声明可以被提升(因此可以在代码中先调用它,然后再定义),函数语句则不行。

无论是否由事件处理程序调用,JavaScript都会执行在脚本文件中定义的函数吗?

只有在函数被调用时才会执行。这可能是因为某些东西具有 theFunction 后跟 ()(可能带有参数),或者因为它已经成为一个事件处理程序。

onload="function"

如果这是JS,则它将向期望函数的位置分配一个字符串。如果这是HTML,则需要使用 () 调用该函数。

最后,如果一个函数在另一个函数中定义,当调用父函数时,下层函数也会被调用吗?

不会。只有在调用函数时才会调用函数。在另一个函数内声明函数只是限制了其作用域。


0

当你声明一个函数时,它不会被执行直到它被调用(这也适用于在onload和其他事件中声明的函数)。

对于嵌套函数,它们不会在顶层函数被调用时自动执行,除非包含函数调用它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接