1. for語(yǔ)句
for語(yǔ)句也是一種前測(cè)試循環(huán)語(yǔ)句,但它具有在執(zhí)行循環(huán)之前初始化變量和定義循環(huán)后要執(zhí)行的代碼的能力。以下是for語(yǔ)句的語(yǔ)法:
for (initialization; expression; post-loop-expression) statement
下面是一個(gè)示例:
var count=10;
for (var i=0j i alert(i);
}
以上代碼定義了變量i的初始值為0。只有當(dāng)條件表達(dá)式(i var count=10;
var i=0;
while(i alert (i);
i++;
}
使用while循環(huán)做不到的,使用for循環(huán)同樣也做不到。也就是說(shuō),for循環(huán)只是把與循環(huán)有關(guān)的代碼集中在了一個(gè)位置。
在這里,南昌網(wǎng)站建設(shè)公司百恒網(wǎng)絡(luò)前端開(kāi)發(fā)工程師有必要指出的是,在for循環(huán)的變量初始化表達(dá)式中,也可以不使用var關(guān)鍵字。該變量的初始化可以在外部執(zhí)行,例如:
var count=10;
alert(i);
for ( i=0;i 以上代碼與在循環(huán)初始化表達(dá)式中聲明變量的效果是一樣的。由于ECMAScLript中不存在塊級(jí)作用域(第4章將進(jìn)一步討論這一點(diǎn)),因此在循環(huán)內(nèi)部定義的變量也可以在外部訪問(wèn)到。例如:
var count -1(
for (var i=O; i alert (i);
}
alert (i);
在這個(gè)例子中,會(huì)右一個(gè)警告框顯示循環(huán)完成后變量i的值,這個(gè)值是10。這是因?yàn)?,即使i是在循環(huán)內(nèi)部定義的一個(gè)變量,但在循環(huán)外部仍然可以訪問(wèn)到它。
此外,南昌網(wǎng)頁(yè)設(shè)計(jì)公司工程式師提示:for語(yǔ)句中的初始化表達(dá)式、控制表達(dá)式和循環(huán)后表達(dá)式都是可選的。將這兩個(gè)表達(dá)式全部省略,就會(huì)創(chuàng)建一個(gè)無(wú)限循環(huán),例如:
for(;;){ //無(wú)限循環(huán)
doSomething();
)
而只給出控制表達(dá)式實(shí)際上就把for循環(huán)轉(zhuǎn)換成了while循環(huán),例如:
var count=10;
var i=O;
for (; i alert (i);
i++;
}
由于for語(yǔ)句存在極大的靈活性,因此它也是ECMAScript中最常用的一個(gè)語(yǔ)句。
2. for-in語(yǔ)句
for-in語(yǔ)句是一種精準(zhǔn)的迭代語(yǔ)句,可以用來(lái)枚舉對(duì)象的屬性。以下是for-in語(yǔ)句的語(yǔ)法:
for (property in expression) statement
下面是一個(gè)示例:
for (var propName in window) {
document.write (propName);
document.write("
"); }
在這個(gè)例子中,我們使用for-in循環(huán)來(lái)顯示了BOM中window對(duì)象的所有屬性。每次執(zhí)行循環(huán)時(shí),都會(huì)將window對(duì)象中存在的一個(gè)屬性名賦值給變量propName。這個(gè)過(guò)程會(huì)一直持續(xù)到對(duì)象中的所有屬性都被枚舉一遍為止。與for語(yǔ)句類(lèi)似,這里控制語(yǔ)句中的var操作符也不是必需的。但是,為了保證使用局部變量,南昌網(wǎng)站制作公司前端開(kāi)發(fā)工程師推薦上面例子中的這種做法。
ECMAScript對(duì)象的屬性沒(méi)有順序。因此,通過(guò)for-in循環(huán)輸出的屬性名的順序是不可預(yù)測(cè)的。具體來(lái)講,所有屬性都會(huì)被返回一次,但返回的先后次序可能會(huì)因?yàn)g覽器而異。
南昌網(wǎng)站優(yōu)化公司提醒,safari 3以前版本的for-in語(yǔ)句中存在一個(gè)bug,該bug會(huì)導(dǎo)致某些屬性被返回兩次.
希望本文對(duì)廣大站長(zhǎng)或從事企業(yè)網(wǎng)站建設(shè)公司的團(tuán)隊(duì)有所幫助,如對(duì)此不太理解的,可以與南昌網(wǎng)絡(luò)公司百恒網(wǎng)絡(luò)技術(shù)部聯(lián)系。我們很高興與廣大站長(zhǎng)和從事企業(yè)網(wǎng)站建設(shè)公司技術(shù)人員分享我們的技術(shù)和經(jīng)驗(yàn)。