我倾向于认为像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个文件 和甚至在第一行可以执行之前解释 ?
答案 0 :(得分:0)
没有。浏览器一次处理一个文件(或者更确切地说,脚本元素)。稍后的脚本元素将添加到同一环境中(因此共享变量),但不会等待。
如果您加载的第一个文件在读取第二个文件之前调用未定义的函数,那么它将会出错。 (除非该调用来自于在加载第二个文件之后才调用的函数)。