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

來源:互聯網
上載者:User

簡介

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)和Firefox瀏覽器(版本:27.0.1)運行得出的。
二、上述八個實驗是相互獨立的,請分別單獨運行以得到正確的結果。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.