国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript 數組循環引起的思考

2019-11-21 00:51:02
字體:
來源:轉載
供稿:網友
看代碼,不說話:
復制代碼 代碼如下:

var i=arr.length;
while(i--)
{
//寫點啥?
}

上面是Google array.js 程序中建議改進的代碼。思考為什么i-- 到了 i為0時while循環結束了?

下面的代碼與它等價:
復制代碼 代碼如下:

var i=arr.length;
for(;i--;)
{
//i--寫在兩個分號的中間,奇怪嗎?不奇怪嗎?
}

震撼?沒感覺?

呃。平時我們寫在兩個分號中間的是什么?這個i--按“常理”應該是在第二個分號之后啊。那我們看看C語言的代碼:
復制代碼 代碼如下:

int main()
{
int i = 5;
while(i--)
{
printf("%d ", i);
}
while(1);
return 0;
}

運行的結果也是與JavaScript驚人的一致!

好吧。我不知道這是為什么?只知道數值0轉換成布爾值為false:

var i= !!0;

而別的數值轉換成布爾值為true。上面的示例程序代碼是將數值到布爾值的顯式轉換。

0隱式轉換為false的情況用下面的JS程序測一下:
復制代碼 代碼如下:

var i=0;
if(i)
{
alert('if');
}
else{
alert('else');
}
alert('不管怎么if和怎么else程序都要走這兒');

if這個示例代碼寫得一點都不“實戰”?那好吧,下面是一位土豆網前端開發高手的代碼示例片段:
復制代碼 代碼如下:

var obj = {status:0, msg:'xxxx'};
var data = obj.status || 'xxxx';

這個總夠“隱蔽”的了!

再強調一次:數值0的隱式轉換成布爾值為false的條件是在if()中、while()中、for(;;)兩個分號的中間等布爾判定的條件表達式。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鸡泽县| 平利县| 富顺县| 丰县| 郸城县| 灯塔市| 揭东县| 洞口县| 东宁县| 镇雄县| 年辖:市辖区| 栾川县| 娄烦县| 崇左市| 巴中市| 长沙县| 宜阳县| 英山县| 桐城市| 东光县| 安仁县| 安国市| 丰顺县| 石屏县| 宜宾县| 屏南县| 新宾| 怀柔区| 盐源县| 温州市| 项城市| 宁化县| 象州县| 茶陵县| 轮台县| 海原县| 南召县| 云和县| 天长市| 泰来县| 寿宁县|