在整个脚本完成解析之前是否运行javascript函数调用
Does a javascript function call run before the entire script is finished parsing?
我知道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函数声明和求值顺序
相关文章:
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 如何检查函数是否将运行或可用
- 检查在使用节点运行程序时是否给出ARGV
- 检查grunt是否在详细模式下运行
- 是否可以从javascript文件中将量角器作为模块运行
- Chrome扩展:是否有一种方法可以运行JavaScript来获取页面上的内部html,并将其保存到扩展中的变量中
- 是否可以在node.js依赖项上运行脚本
- stopPropagation是否还会阻止同一元素上的其他处理程序运行
- 什么决定了 Node.js 应用是否保持运行
- 是否可以从在Firefox或IE的网页中运行的Javascript启动Windows进程
- 将函数分配给javascript中的变量是否运行该函数
- 流星 - 检查您是否运行了 2 个版本的 React
- GWT 动画在从 websocket 调用时是否运行
- 在JS中是否有可能从浏览器的控制台中检测是否运行了任何JS ?
- 当子类继承并挂载父类时,父类是否运行生命周期方法?
- Node是否运行所需模块中的所有代码?
- 如何通过Office .js查看Office AddIn主机是否运行Outlook应用
- 如何检测Chrome检查元素是否运行
- 在整个脚本完成解析之前是否运行javascript函数调用
- 记住之前是否运行过javascript,如果是[EnjoyHint.js]就不要再运行它