For循環(huán)中分號隔開的3部分的執(zhí)行順序探討
更新時間:2014年05月27日 10:37:07 作者:
這篇文章主要探討了For循環(huán)中分號隔開的3部分的執(zhí)行順序,需要的朋友可以參考下
引發(fā)這個問題思考的是一段js程序的運行結(jié)果:
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();
這段程序的運行結(jié)果是Result = 21;
從這段程序中我們可以看出,i在a函數(shù)返回的時候值是20這是沒有問題的。
而在b函數(shù)返回的時候,i的值是20還是21就值得討論了。
問題的本質(zhì)即:先進(jìn)行了判斷i<3,還是先進(jìn)行了i++,再判斷是否i<3.
根據(jù)執(zhí)行的結(jié)果可以看出,是先執(zhí)行了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();//這個函數(shù)返回是i=20
//當(dāng)i=20 經(jīng)過 i++后 i=21 那么就不符合i<3的條件,直接退出。所以return i=21 這很正常!
}
return i;
}
var Result = b();
在此我們補完for循環(huán)的執(zhí)行順序:
以下面程序為例
for(int i=0;i<10;i++)
{
}
首先執(zhí)行i=0;i<10; 然后執(zhí)行第一輪循環(huán)體
然后執(zhí)行:i++,i<10; 然后執(zhí)行第二輪循環(huán)體
直到最后一次 i++后 i >=10,此時循環(huán)結(jié)束。
即
語句 1 在循環(huán)(代碼塊)開始前執(zhí)行
語句 2 定義運行循環(huán)(代碼塊)的條件
語句 3 在循環(huán)(代碼塊)已被執(zhí)行之后執(zhí)行
復(fù)制代碼 代碼如下:
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();
這段程序的運行結(jié)果是Result = 21;
從這段程序中我們可以看出,i在a函數(shù)返回的時候值是20這是沒有問題的。
而在b函數(shù)返回的時候,i的值是20還是21就值得討論了。
問題的本質(zhì)即:先進(jìn)行了判斷i<3,還是先進(jìn)行了i++,再判斷是否i<3.
根據(jù)執(zhí)行的結(jié)果可以看出,是先執(zhí)行了i++的。
復(fù)制代碼 代碼如下:
function a(){
for(i=0;i<20;i++){
// 沒有 var i
//這里的i就是全局變量所有人可以訪問
}
}
function b(){
for(i=0;i<3;i++){
//alert(i);//同理這里的i也是全局變量,返回0且只有一次返回
a();//這個函數(shù)返回是i=20
//當(dāng)i=20 經(jīng)過 i++后 i=21 那么就不符合i<3的條件,直接退出。所以return i=21 這很正常!
}
return i;
}
var Result = b();
在此我們補完for循環(huán)的執(zhí)行順序:
以下面程序為例
復(fù)制代碼 代碼如下:
for(int i=0;i<10;i++)
{
}
首先執(zhí)行i=0;i<10; 然后執(zhí)行第一輪循環(huán)體
然后執(zhí)行:i++,i<10; 然后執(zhí)行第二輪循環(huán)體
直到最后一次 i++后 i >=10,此時循環(huán)結(jié)束。
即
語句 1 在循環(huán)(代碼塊)開始前執(zhí)行
語句 2 定義運行循環(huán)(代碼塊)的條件
語句 3 在循環(huán)(代碼塊)已被執(zhí)行之后執(zhí)行
相關(guān)文章
JavaScript實現(xiàn)找出數(shù)組中最長的連續(xù)數(shù)字序列
這篇文章主要介紹了JavaScript實現(xiàn)找出數(shù)組中最長的連續(xù)數(shù)字序列的方法,需要的朋友可以參考下2014-09-09javascript iframe內(nèi)的函數(shù)調(diào)用實現(xiàn)方法
用下面的方法可以調(diào)用iframe中的函數(shù),實現(xiàn)一些比較特殊的效果,不過能跨域的。2009-07-07js將iframe中控件的值傳到主頁面控件中的實現(xiàn)方法
主要是通過在主頁面定義一個傳輸數(shù)據(jù)的函數(shù)GetData(data),然后在iframe嵌入頁面中通過parent.GetData(data),這樣即可在GetData實現(xiàn)將data進(jìn)行處理即可。2013-03-03