Javascript中代码的执行顺序是啥?

Posted

技术标签:

【中文标题】Javascript中代码的执行顺序是啥?【英文标题】: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 中的执行顺序。

【问题讨论】:

【参考方案1】:
var render = new function()
  // same code here

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

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

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

调用它们时执行

【讨论】:

【参考方案2】:

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

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

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

onload="function"

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

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

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于Javascript中代码的执行顺序是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Java中代码的执行顺序

javascript--函数的声明及调用/JS中代码执行顺序

Java代码的执行顺序

JavaScript Promise 中的执行顺序是啥?

java中代码执行顺序

html中代码执行顺序