在整个脚本完成解析之前是否运行javascript函数调用

Does a javascript function call run before the entire script is finished parsing?

本文关键字:是否 运行 函数调用 javascript 脚本      更新时间:2023-09-26

我知道Javascript按顺序执行代码。然而,我总是试图确定是否有任何代码立即运行,"一行接一行",在每个函数编译执行之后,或者在该脚本中执行所有立即函数调用,等待整个脚本在实际运行之前完成解析。

我想更好地理解javascript解析和执行代码的方式。主要用于外部脚本,这似乎有点难以在控制台日志中观察到。

一个适用的用途,是尝试拦截"交互式"文档。在外部脚本中尽可能早地使用readyState,因为"交互"状态有时会非常早地触发。根据http://bugs.jquery.com/ticket/12282#comment:15

No。一个脚本标签的整个内容(不管是内联的还是外部的)必须先被解析,然后才能求值。

这是因为javascript将变量和函数声明"提升"到作用域顶部的方式:http://elegantcode.com/2011/03/24/basic-javascript-part-12-function-hoisting/

Javascript一次编译和执行一个脚本(标签)。因此,在每个脚本标记中,无论是内联的还是来自文件的,都要编译然后执行整个代码。但是每个单独的脚本标签是按顺序编译和执行的。

您可以通过简单地运行以下两个示例来检查:

示例1:

<html>
<script>
    alert(x);
    var x;
</script>
</html>

上面的代码会提示"undefined"。另一方面,……

示例2:

<html>
<script>
    alert(x);
</script>
<script>
    var x;
</script>
</html>

上面的代码将触发一个错误,因为x不存在。


注意:* JavaScript函数声明和求值顺序