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 中的执行顺序。

4

3 回答 3

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

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

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

仅当您通过调用调用它们时才会执行函数 f()

于 2011-07-21T13:29:28.407 回答
4

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

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

函数在被调用时被调用。要么是因为theFunction后面跟着某些东西()(可能带有参数),要么是因为它已成为事件处理程序。

onload="function"

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

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

不,一个函数只有在被调用时才会被调用。在另一个函数中声明一个函数只是限制了它的范围。

于 2011-07-21T13:30:51.873 回答
0

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

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

于 2011-07-21T13:31:56.803 回答