For迴圈中分號隔開的3部分的執行順序探討

來源:互聯網
上載者:User

引發這個問題思考的是一段js程式的運行結果:
複製代碼 代碼如下:
var i = 0;
function a(){
for(i=0;i<20;i++){
}
}
function b(){
for(i=0;i<3;i++){
a();
}
return i;
}
var Result = b();

這段程式的運行結果是Result = 21;

從這段程式中我們可以看出,i在a函數返回的時候值是20這是沒有問題的。
而在b函數返回的時候,i的值是20還是21就值得討論了。
問題的本質即:先進行了判斷i<3,還是先進行了i++,再判斷是否i<3.

根據執行的結果可以看出,是先執行了i++的。
複製代碼 代碼如下:
function a(){
for(i=0;i<20;i++){
// 沒有 var i
//這裡的i就是全域變數所有人可以訪問
}
}
function b(){
for(i=0;i<3;i++){
//alert(i);//同理這裡的i也是全域變數,返回0且只有一次返回
a();//這個函數返回是i=20
//當i=20 經過 i++後 i=21 那麼就不符合i<3的條件,直接退出。所以return i=21 這很正常!
}
return i;
}
var Result = b();

在此我們補完for迴圈的執行順序:
以下面程式為例
複製代碼 代碼如下:
for(int i=0;i<10;i++)
{
}

首先執行i=0;i<10; 然後執行第一輪迴圈體
然後執行:i++,i<10; 然後執行第二輪迴圈體
直到最後一次 i++後 i >=10,此時迴圈結束。

即

語句 1 在迴圈(代碼塊)開始前執行

語句 2 定義運行迴圈(代碼塊)的條件

語句 3 在迴圈(代碼塊)已被執行之後執行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.