文章内容由http://www.2cto.com/kf/201401/273825.html和http://www.cnblogs.com/rubylouvre/archive/2009/08/21/1551270.html内容整合而成
JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行。如果你不能理解javaScript语言的运行机制,或者简单地说,你不能掌握javascript的执行顺序,那你就犹如伯乐驾驭不了千里马,让千里马脱缰而出,四处乱窜。
那么JavaScript是怎么来进行解析的吗?它的执行顺序又是如何的呢?在了解这些之前,我们先来认识几个重要的术语:
<script type="text/javascript"> alert("这是代码块一"); </script> <script type="text/javascript"> alert("这是代码块二"); </script>
<script type="text/javascript"> alert(str);//因为没有定义str,所以浏览器会出错,下面的不能运行 alert("我是代码块一");//没有运行到这里 var test = "我是代码块一变量"; </script> <script type="text/javascript"> alert("我是代码块二"); //这里有运行到 alert(test); //弹出"我是代码块一变量" </script>
<script type="text/javascript"> function Fn(){ //声明式函数 } var Fn = function{ //赋值式函数 } </script>声明式函数与赋值式函数的区别在于:在JS的预编译期,声明式函数将会先被提取出来,然后才按顺序执行js代码。
举个例子:
<script type="text/javascript"> var a=100; var b=true; function test(){ alert(a); alert(b); b=false; alert(b); var a=200; alert(a/2); alert(++Math.PI); alert(Math.PI++); } test(); </script>
function loadEvent(){ var a=5; var b=10; a=[a,b]; b=a[0]; a=a[1]; alert("a:"+a+",b:"+b); } </script> </head> <body > <div id="divTest"> </div> <button aa="aaa" click="noRepeat">delete</button > </body> </html>
</pre><div>由于并未调用loadEvent函数,网页上并无弹出的效果,只有当我们调用了函数,比如:</div><div><pre class="html" name="code"><body onload="loadEvent()"> <div id="divTest"> </div> <button aa="aaa" click="noRepeat">delete</button > </body>