Javascript 执行顺序的总结 Javascript 执行顺序的总结 JavaScript 程序执行顺序问题总结好记星不如烂笔头,适时的总结梳理知识让人更轻松愉快。今天总结下学习和开发中遇到的 JavaScript 执行顺序的问题,今天挖个坑,以后会慢慢填,也希望抛砖引玉,能学到更多的东西。顺序可能比较乱, 写多了再整理, 有些术语可能运用也不恰当, 欢迎批评指正。以下使用的示例程序都经过了本人的实际验证, 兼容各大浏览器。 OK ,步入正题。 1. 变量的声明和引用变量必须先声明后引用, 这个大家是都知道的, 但还是要说说, 因为后面要说到一个相关的问题。 view sourceprint?1 alert(myStr); // 弹出"undefined"; 2 var myStr = "Hello World!"; 3 alert(myStr); // 弹出"Hello World"; 2. 函数的声明和调用 JavaScript 是一种描述型脚本语言,由浏览器进行动态的解析与执行。函数的定义方式大体有以下两种, 浏览器对于不同的方式有不同的解析顺序。 view sourceprint?1 //“定义式”函数定义 2 function Fn1(){ 3 alert("Hello World!"); 4}5 //“赋值式”函数定义 6 var Fn2 = function(){ 7 alert("Hello wild!"); 8} 页面加载过程中, 浏览器会对页面上或载入的每个 js 代码块( 或文件) 进行扫描, 如果遇到定义式函数, 则进行预处理( 类似于 C 等的编译), 处理完成之后再开始由上至下执行; 遇到赋值式函数, 则只是将函数赋给一个变量,不进行预处理( 类似 1 中变量必须先定义后引用的原则) ,待调用到的时候才进行处理。下面举个简单的例子: view sourceprint?1 //“定义式”函数定义 2 Fn1(); 3 function Fn1(){ 4 alert("Hello World!"); 5} 正常执行,弹出“ Hello World! ”,浏览器对 Fn1 进行了预处理,再从 Fn1(); 开始执行。 view sourceprint?1 //“赋值式”函数定义 2 Fn2(); 3 var Fn2 = function(){ 4 alert("Hello wild!"); 5} Firebug 报错: Fn2 is not a function ,浏览器未对 Fn2 进行预处理,依序执行,所以报错 Fn2 未定义。 3. 代码块及 js 文件的处理“代码块”是指一对<script type= ” text/javascript ”></script> 标签包裹着的 js 代码,文件就是指文件啦,废话:D 浏览器对每个块或文件进行独立的扫描, 然后对全局的代码进行顺序执行(2 中讲到了)。所以, 在一个块( 文件)中, 函数可以在调用之后进行“定义式”定义; 但在两个块中, 定义函数所在的块必须在函数被调用的块之前。很绕口,看例子好了: view sourceprint?1 <script type="text/javascript"> 2 Fn(); 3 </script> 4 <script type=
Javascript执行顺序的总结 来自淘豆网m.daumloan.com转载请标明出处.