萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> javascript的解析執行順序在各個浏覽器中的不同

javascript的解析執行順序在各個浏覽器中的不同

 javascript是一種解釋型語言,它的執行是自上而下的。由於各個浏覽器對它的理解有所差異,所以我們有必要深入理解js的執行順序

簡介    javascript是一種解釋型語言,它的執行是自上而下的。但是各浏覽器對於【自上而下】的理解是有細微差別的,而代碼的上下游也就是程序流對於程序正確運行又是至關重要的。所以我們有必要深入理解js的執行順序。為此,我設計了如下八個實驗來獲得最確切的結果。    實驗   代碼如下: <script type="text/javascript">  //實驗一:  function t(a)  {  alert("[t(a)]a:" + a);  }  function t(a, b)  {  alert("[t(a, b)]a:" + a + ", b:" + b);  }  t(1);  //結果:  //[t(a, b)]a:1, b:undefined    //實驗二:  function t(a, b)  {  alert("[t(a, b)]a:" + a + ", b:" + b);  }  function t(a)  {  alert("[t(a)]a:" + a);  }  t(1);  //結果:  //[t(a)]a:1    //實驗三:  function t(a)  {  alert("[t(a)]a:" + a);  }  function t(a, b)  {  alert("[t(a, b)]a:" + a + ", b:" + b);  }  t(1, 2);  //結果:  //[t(a, b)]a:1, b:2    //實驗四:  function t(a, b)  {  alert("[t(a, b)]a:" + a + ", b:" + b);  }  function t(a)  {  alert("[t(a)]a:" + a);  }  t(1, 2);  //結果:  //[t(a)]a:1    //實驗五  function t(a)  {  alert("[t(a)]a:" + a);  }  t(1);  function t(a, b)  {  alert("[t(a, b)]a:" + a + ", b:" + b);  }  //結果:  //[t(a, b)]a:1, b:undefined    //實驗六  function t(a)  {  alert("[t(a)]a:" + a);  }  t(1, 2);  function t(a, b)  {  alert("[t(a, b)]a:" + a + ", b:" + b);  }  //結果:  //[t(a, b)]a:1, b:2    //實驗七  function t(a, b)  {  alert("[t(a, b)]a:" + a + ", b:" + b);  }  t(1);  function t(a)  {  alert("[t(a)]a:" + a);  }  //結果:  //[t(a)]a:1    //實驗八  function t(a, b)  {  alert("[t(a, b)]a:" + a + ", b:" + b);  }  t(1, 2);  function t(a)  {  alert("[t(a)]a:" + a);  }  //結果:  //[t(a)]a:1    </script>    後記    定義javascript函數時,函數名是函數對象的標識,參數數量只是這個函數的屬性。靠定義參數數量不同的函數實現重載是不行的。  調用函數時,js通過函數名找到對應的函數對象,然後根據函數定義時的參數,和表達式參數列表按順序匹配,多余的參數捨去,不夠的參數按undefined處理,然後執行函數代碼。    所以定義函數時,通常把必選參數放在參數列表最前面,可選參數放在必選參數後面。    注意事項    一、上述八個實驗的結果是經過360浏覽器(版本/內核:6.3.1.142/21.0.1180.89)和火狐浏覽器(版本:27.0.1)運行得出的。  二、上述八個實驗是相互獨立的,請分別單獨運行以得到正確的結果。 
copyright © 萬盛學電腦網 all rights reserved