JavaScript 數(shù)組循環(huán)引起的思考
更新時間:2010年01月01日 00:07:12 作者:
Google array.js 程序中建議改進的代碼。思考為什么i-- 到了 i為0時while循環(huán)結(jié)束了?
看代碼,不說話:
var i=arr.length;
while(i--)
{
//寫點啥?
}
上面是Google array.js 程序中建議改進的代碼。思考為什么i-- 到了 i為0時while循環(huán)結(jié)束了?
下面的代碼與它等價:
var i=arr.length;
for(;i--;)
{
//i--寫在兩個分號的中間,奇怪嗎?不奇怪嗎?
}
震撼?沒感覺?
呃。平時我們寫在兩個分號中間的是什么?這個i--按“常理”應(yīng)該是在第二個分號之后啊。那我們看看C語言的代碼:
int main()
{
int i = 5;
while(i--)
{
printf("%d ", i);
}
while(1);
return 0;
}
運行的結(jié)果也是與JavaScript驚人的一致!
好吧。我不知道這是為什么?只知道數(shù)值0轉(zhuǎn)換成布爾值為false:
var i= !!0;
而別的數(shù)值轉(zhuǎn)換成布爾值為true。上面的示例程序代碼是將數(shù)值到布爾值的顯式轉(zhuǎn)換。
0隱式轉(zhuǎn)換為false的情況用下面的JS程序測一下:
var i=0;
if(i)
{
alert('if');
}
else{
alert('else');
}
alert('不管怎么if和怎么else程序都要走這兒');
if這個示例代碼寫得一點都不“實戰(zhàn)”?那好吧,下面是一位土豆網(wǎng)前端開發(fā)高手的代碼示例片段:
var obj = {status:0, msg:'xxxx'};
var data = obj.status || 'xxxx';
這個總夠“隱蔽”的了!
再強調(diào)一次:數(shù)值0的隱式轉(zhuǎn)換成布爾值為false的條件是在if()中、while()中、for(;;)兩個分號的中間等布爾判定的條件表達式。
復制代碼 代碼如下:
var i=arr.length;
while(i--)
{
//寫點啥?
}
上面是Google array.js 程序中建議改進的代碼。思考為什么i-- 到了 i為0時while循環(huán)結(jié)束了?
下面的代碼與它等價:
復制代碼 代碼如下:
var i=arr.length;
for(;i--;)
{
//i--寫在兩個分號的中間,奇怪嗎?不奇怪嗎?
}
震撼?沒感覺?
呃。平時我們寫在兩個分號中間的是什么?這個i--按“常理”應(yīng)該是在第二個分號之后啊。那我們看看C語言的代碼:
復制代碼 代碼如下:
int main()
{
int i = 5;
while(i--)
{
printf("%d ", i);
}
while(1);
return 0;
}
運行的結(jié)果也是與JavaScript驚人的一致!
好吧。我不知道這是為什么?只知道數(shù)值0轉(zhuǎn)換成布爾值為false:
var i= !!0;
而別的數(shù)值轉(zhuǎn)換成布爾值為true。上面的示例程序代碼是將數(shù)值到布爾值的顯式轉(zhuǎn)換。
0隱式轉(zhuǎn)換為false的情況用下面的JS程序測一下:
復制代碼 代碼如下:
var i=0;
if(i)
{
alert('if');
}
else{
alert('else');
}
alert('不管怎么if和怎么else程序都要走這兒');
if這個示例代碼寫得一點都不“實戰(zhàn)”?那好吧,下面是一位土豆網(wǎng)前端開發(fā)高手的代碼示例片段:
復制代碼 代碼如下:
var obj = {status:0, msg:'xxxx'};
var data = obj.status || 'xxxx';
這個總夠“隱蔽”的了!
再強調(diào)一次:數(shù)值0的隱式轉(zhuǎn)換成布爾值為false的條件是在if()中、while()中、for(;;)兩個分號的中間等布爾判定的條件表達式。
您可能感興趣的文章:
- js判斷數(shù)組key是否存在(不用循環(huán))的簡單實例
- JS簡單循環(huán)遍歷json數(shù)組的方法
- JavaScript數(shù)組和循環(huán)詳解
- js使用for循環(huán)查詢數(shù)組中是否存在某個值
- JS數(shù)組的遍歷方式for循環(huán)與for...in
- js數(shù)組循環(huán)遍歷數(shù)組內(nèi)所有元素的方法
- js 數(shù)組的for循環(huán)到底應(yīng)該怎么寫?
- javascript中利用數(shù)組實現(xiàn)的循環(huán)隊列代碼
- JavaScript中關(guān)于for循環(huán)刪除數(shù)組元素內(nèi)容時出現(xiàn)的問題
相關(guān)文章
JavaScript、jQuery與Ajax的關(guān)系
這篇文章主要介紹了 JavaScript、jQuery與Ajax的關(guān)系的相關(guān)資料,需要的朋友可以參考下2016-01-01