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中代码的执行顺序是啥?的主要内容,如果未能解决你的问题,请参考以下文章