我倾向于把 JavaScript 想象成 Ruby,第一行被解释和执行,最后一行直到最后才被解释。
但由于 JavaScript 受提升规则的约束,例如:
console.log(foo); // foo already has a value
function foo() {
return 123;
}
那么如果console.log
是从 HTML 链接的 JavaScript 文件的第一行,并且文件是 200kb,然后 HTML 文件链接了 10 个其他 JavaScript 文件,并且foo
在最后一个文件的最后一行定义了 ,那么由于提升规则,foo
即使在第一行也需要定义,这意味着必须在第一行执行之前下载和解释所有 11 个文件?