在第一行执行之前,是否需要解释每一行JavaScript?

时间:2013-02-20 10:43:00

标签: javascript

我倾向于认为像Ruby一样的JavaScript,第一行被解释和执行,最后一行直到最后才被解释。

但由于JavaScript受制于提升规则,例如:

console.log(foo);   // foo already has a value

function foo() {
    return 123;
}

那么如果console.log是从HTML链接的JavaScript文件的第一行,文件是200kb,然后HTML文件链接其他10个JavaScript文件,foo是在最后一个文件的最后一行定义,然后由于提升规则,即使在第一行也需要定义foo,这意味着必须下载所有11个文件 和甚至在第一行可以执行之前解释

1 个答案:

答案 0 :(得分:0)

没有。浏览器一次处理一个文件(或者更确切地说,脚本元素)。稍后的脚本元素将添加到同一环境中(因此共享变量),但不会等待。

如果您加载的第一个文件在读取第二个文件之前调用未定义的函数,那么它将会出错。 (除非该调用来自于在加载第二个文件之后才调用的函数)。