http://www.chencheng.org/blog/2009/01/20/javascript-order/
JS是一段一段执行的(以<script>标签来分割),执行每一段之前,都有一个“预编译”,预编译干的活是:声明所有var变量(初始为undefined),解析定义式函数语句。
还有个关于 "window作用域下,a = 1和var a = 1" 的区别的也很经典:
a = 1相当于window.a = 1,是动态地为window添加一个成员;
var a = 1是在当前作用域(也就是window)下声明一个a,这个声明是在整个作用域内都有效的。
换句话说,其实区别就在于var a = 1比a = 1多了一个声明的行为。
再看几个例子:
alert(t);
alert('ok');
t = 2;t未声明,执行报错。
alert(t);
alert('ok');
var t = 2;弹出undefined和ok。预编译的时候,声明了变量t;执行到alert(t)这行代码的时候,t尚未被赋值,所以弹出undefined。
a();
function a() {}
alert('ok');弹出ok。预编译的时候,解析了定义式函数语句function a() {},顺利执行。
a();
var a = function() {};
alert('ok');a不是函数,执行报错。预编译的时候,声明了变量a = undefined;执行到a()时,a还等于undefined,不是函数,所以执行a()会报错。
<script type="text/javascript">
a();
alert('first block');
</script>
<script type="text/javascript">
alert('second block');
</script>弹出second block。因为JS是一段一段执行的,第一段执行到a()的时候报错,整个第一段都不会再执行,第二段正常执行。
firefox下的还有个小技巧:
如果上述例子中该报错的没有报错,输入about:config, 搜索strict, 看下javascript.options.strict, 如果是false的把他改为true。
分享到:
相关推荐
JavaScript作为一种网页脚本语言,其执行顺序直接影响到脚本的运行效果和页面的行为。理解JavaScript代码是如何按照顺序被执行的是开发高质量Web应用的基础之一。 **1.1 按HTML文档流顺序执行JavaScript代码** ...
### JavaScript的执行过程详细研究 #### 一、JavaScript执行顺序概览 ...通过掌握HTML文档流中的执行顺序、外部文件的加载顺序以及预编译阶段的行为,开发者可以更好地控制程序的执行流程,避免潜在的错误和性能问题。
在Vue.js框架中,尤其是最新的3.x版本与Vite构建工具的结合,理解子组件和父组件的执行顺序是至关重要的。Vue的生命周期是每个组件从创建到销毁的过程,其中包括了初始化、挂载、更新和卸载等阶段。在父子组件的关系...
然而,异步脚本的执行顺序是不确定的,可能在HTML解析的任何时刻执行,而且它们之间没有依赖关系的话,这可以提高页面加载速度。 4. **延迟加载(defer)**:`<script defer src="script.js"></script>`这个特性...
JavaScript是一种动态脚本...了解代码块、声明式函数与赋值式函数、预编译期与执行期之间的关系,对于避免常见的作用域和执行顺序错误至关重要。这些基本知识点是深入理解JavaScript这门语言,成为高效开发者的基石。
### JSP页面中的代码执行加载顺序详解 #### 一、引言 ...在开发过程中,理解JSP页面中的代码执行顺序对于确保程序...通过合理安排代码结构和执行顺序,可以有效避免程序运行时出现的意外问题,提高程序的稳定性和性能。
JavaScript执行顺序是JavaScript编程...总结来说,理解JavaScript的执行顺序和预编译机制对于编写高质量的JavaScript代码至关重要。掌握这些知识点,可以更好地避免一些常见错误,让JavaScript程序运行更加稳定和高效。
JavaScript的运行机制主要涉及到代码块、...总之,理解JavaScript的运行机制和执行顺序是成为一名合格的JavaScript开发者的基础。通过深入学习和实践,你可以更有效地编写代码,避免潜在的问题,并提高程序的运行效率。
JavaScript的执行顺序是一个重要的概念,尤其对于前端开发者来说,理解这一机制能帮助我们更好地组织代码,确保程序的正常运行。JavaScript代码的执行受到多种因素的影响,包括HTML文档的解析流程、脚本的引入方式...
理解JavaScript的执行顺序是理解代码行为的关键。JavaScript的代码执行可以分为两个阶段:代码检查装载阶段(预编译阶段)和代码执行阶段。 在代码检查装载阶段,JavaScript引擎会进行变量和函数声明,但不会执行...
- 执行`ant build`和`ant publish-local`来分别构建和发布模块。 - 对于插件的构建,也可以采用类似的方式: - 进入特定插件的目录,如`xml-input-stream`。 - 执行`ant build`和`ant publish-local`来构建和...
在这个例子中,`import()`表达式会异步加载`myModule.js`,只有当代码执行到这一行时才会发起请求并编译模块,而不是在应用启动时一次性加载所有模块。 Webpack支持动态导入,并且可以通过配置来优化这种加载方式。...
这个文件通常会调用上述提到的各种工具,按照特定的顺序执行编译、合并、压缩和优化操作。用户可以通过运行这个批处理文件,一次性完成所有预编译任务,确保网站部署前的准备工作。 总的来说,预编译是现代Web开发...
在探讨JavaScript的执行过程时,预编译阶段和执行阶段是两个非常关键的概念。理解这两个阶段对于编写和...掌握变量提升、函数声明与执行顺序以及作用域等方面的知识,可以有效避免在编码过程中出现常见的陷阱和错误。
废话不多说,直奔主题了。javascript的运行原理总结如下: 1、按照html文档流顺序执行javascript代码 浏览器是按照文档流从上到下逐步解析...2、预编译和执行顺序的关系 首先看如下这段代码: <script type=text
函数的声明和调用 JavaScript是一种描述型脚本语言,由浏览器进行动态的解析与执行。函数的定义方式大体有以下两种,浏览器对于不同的方式有不同的解析顺序。 代码如下: 代码如下: //“定义式”函数定义 function Fn...
13. ****:处理目标之间的依赖关系,确保正确的执行顺序。 使用Ant的一个显著优势是其灵活性和可扩展性。通过自定义任务或者利用Ant的TaskDef任务,可以引入第三方插件来执行特定操作。此外,Ant与版本控制系统(如...
由于浏览器是从上到下解析HTML文档,JavaScript代码的加载和执行顺序遵循HTML文档结构的顺序。 JavaScript中的全局变量和函数的调用顺序也很重要。在同一个脚本段内,函数声明可以出现在函数调用之后,因为...