【问题标题】:What is the order of execution of code in Javascript?Javascript中代码的执行顺序是什么?
【发布时间】:2011-10-10 05:54:27
【问题描述】:

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

function render() {
    // Code here
}

而不是这个:

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

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

最后,如果一个函数是在另一个函数中定义的,那么在调用父函数时,是不是也调用了下层函数?例如

function a(){

    function b(){
        // code
    }

    function c(){
        //code
    }

}

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

【问题讨论】:

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


    【解决方案1】:
    var render = new function(){
      // same code here
    }
    

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

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

    函数仅在您通过调用f()

    调用它们时执行

    【讨论】:

      【解决方案2】:

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

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

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

      onload="function"

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-05
          相关资源
          最近更新 更多