在Javascript中执行代码的顺序是什么?

时间:2011-07-21 13:27:20

标签: javascript javascript-events order-of-execution

JavaScript中的代码究竟是如何执行的?我的意思是按什么顺序?如果我声明了这样的函数,那么执行顺序是否会有所不同:

function render() {
    // Code here
}

而不是:

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

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

最后如果在另一个函数中定义了一个函数,当调用父函数时,是否也调用了较低的函数? e.g。

function a(){

    function b(){
        // code
    }

    function c(){
        //code
    }

}

我正在尝试对JavaScript中的执行顺序有一个具体的了解。

3 个答案:

答案 0 :(得分:4)

一个函数声明被提升(因此可以在代码中更早地调用它然后定义),而函数声明则不是。

  

JavaScript是否执行脚本文件中定义的函数,无论它们是否被事件处理程序调用?

调用函数时会调用它。要么因为theFunction后跟()(可能带有参数),要么因为它已成为事件处理程序。

  

onload="function"

如果是JS,那么它会为期望函数的东西分配一个字符串。如果是HTML,那么您需要()来调用该函数。

  

最后如果在另一个函数中定义了一个函数,当调用父函数时,是否也调用了较低的函数?

没有。只有在调用函数时才会调用该函数。在另一个函数中声明一个函数只会限制其范围。

答案 1 :(得分:3)

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

new关键字不会创建新的功能。它通过运行该函数创建一个新对象。所以这实际上会运行方法的主体并返回一个对象。

如果询问函数何时被解析并添加到作用域,那么这是特定于实现的,但所有函数都被提升到作用域的顶部,并且通常在执行任何代码之前进行解析。

当您通过调用f()

调用它们时,仅执行

答案 2 :(得分:0)

当你声明一个函数时,它在被调用之前不会被执行(对于在onload和其他事件中声明的函数也是如此)。

对于嵌套函数,当调用顶级函数时,它们不会自动执行.UNTIL包含函数调用它们。