摘要:語(yǔ)句規(guī)定了一組語(yǔ)句也被成為流控制語(yǔ)句語(yǔ)句大多數(shù)編程語(yǔ)言中最為常用的一個(gè)語(yǔ)句就是語(yǔ)句。語(yǔ)句語(yǔ)句是一種精準(zhǔn)的迭代語(yǔ)句。語(yǔ)句該語(yǔ)句的作用是將代碼的作用域設(shè)置到一個(gè)特定的對(duì)象中。
語(yǔ)句
ECMA-262 規(guī)定了一組語(yǔ)句(也被成為流控制語(yǔ)句)
if 語(yǔ)句大多數(shù)編程語(yǔ)言中最為常用的一個(gè)語(yǔ)句就是if 語(yǔ)句。語(yǔ)法如下:
if (condition1) { statement1; } else if (condition2) { statement2; } else { statement3; }
舉個(gè)例子:
var num = 10; if (num > 50) { document.write("bigger than 50") } else if (num < 0) { document.write("smaller than 0") } else { document.write("between 0 and 50") } //"between 0 and 50"do-while 語(yǔ)句
這是一個(gè)后測(cè)試循環(huán)語(yǔ)句;只有在循環(huán)體中的代碼執(zhí)行以后,才會(huì)測(cè)試出口條件。
do { statement; } while (expression);
舉個(gè)例子:
var i = 0; do { document.write("the number is " + i + "while 語(yǔ)句
"); i++; } while (i < 10);
這是一個(gè)前測(cè)試循環(huán)語(yǔ)句;在循環(huán)體中的代碼執(zhí)行以前,就會(huì)測(cè)試出口條件。
while (expression) statement
舉個(gè)例子:
var i = 0; while (i <= 10) { document.write(i + " "); i++ } //0 1 2 3 4 5 6 7 8 9 10for 語(yǔ)句
這是一個(gè)前測(cè)試循環(huán)語(yǔ)句;在循環(huán)體中的代碼執(zhí)行以前,就會(huì)測(cè)試出口條件。
for (initialization; expression; post-loop-expression) statement
舉個(gè)例子:
for (var i = 0; i < 11; i ++) { document.write(i + " ") } //0 1 2 3 4 5 6 7 8 9 10
使用while 語(yǔ)句做不到的,用for 語(yǔ)句也做不到。
由于ECMAScript 中不存在塊級(jí)作用域,因此在循環(huán)內(nèi)部定義的變量也可以在外部訪問(wèn)到。
for-in 語(yǔ)句for-in 語(yǔ)句是一種精準(zhǔn)的迭代語(yǔ)句。可以用來(lái)枚舉對(duì)象的屬性。
語(yǔ)法如下:
for (property in expression) statement
下面是示例:
var cars = new Array; cars = ["benz","BMW"]; for (x in cars){ document.write(cars[x] + " ") } //benz BMW
通過(guò)for-in 語(yǔ)句循環(huán)輸出的屬性名的順序是不可預(yù)測(cè)的。如果表示要迭代的對(duì)象的變量值為null 或undefined,for-in 語(yǔ)句會(huì)拋出錯(cuò)誤。因此建議在使用for-in 循環(huán)之前,先檢測(cè)對(duì)象的值是不是null 或undefined。
label 語(yǔ)句使用label 語(yǔ)句可以在代碼中添加標(biāo)簽,以便在將來(lái)使用。語(yǔ)法如下:
label: statement
下面是例子:
start: for (var i = 0; i < 5; i ++){ document.write(i + " "); if (i == 2){ } } //0 1 2 3 4break 和continue 語(yǔ)句
雖然,兩個(gè)語(yǔ)句都是會(huì)導(dǎo)致立即退出循環(huán)。但break 會(huì)強(qiáng)制繼續(xù)執(zhí)行循環(huán)后面的語(yǔ)句;而continue 則會(huì)退出循環(huán)后從循環(huán)的頂部繼續(xù)執(zhí)行。舉個(gè)例子:
var num = 0; for (var i = 1; i < 7; i ++){ num ++; } document.write(num + "
"); //num 初始值為0,循環(huán)體執(zhí)行了6次,每次num + 1,結(jié)果是num = 0 + 6為6 var num = 0; for (var i = 1; i < 7; i ++){ if (i % 5 == 0){ break; } num ++; } document.write(num + "
"); //num 初始值為0,循環(huán)體執(zhí)行了4次,每次num + 1,結(jié)果是num = 0 + 4為4(當(dāng)i = 5時(shí)退出循環(huán)) var num = 0; for (var i = 1; i < 7; i ++){ if (i % 5 == 0){ continue; } num ++; } document.write(num + "
"); //num 初始值為0,循環(huán)體支行了5次,媒體num + 1,結(jié)果是num = 0 + 5為5(當(dāng)i = 5時(shí)退出循環(huán),從循環(huán)的頂端繼續(xù)執(zhí)行)
另外,break 和continue 語(yǔ)句都可以與label 語(yǔ)句聯(lián)合使用。如:
var num = 0; outermost: for (var i = 0; i < 10; i ++){ for (var j = 0; j < 10; j ++){ if (i == 5 && j == 5){ break outermost; } num ++; } } document.write(num); //55 正常情況下應(yīng)該是i 從0 - 9有10種可能,j 從0 - 9也有10種可能,一共是10 * 10 = 100種可能,即該循環(huán)會(huì)執(zhí)行100次。 //當(dāng)i = 5同時(shí)j = 5時(shí)停止循環(huán),實(shí)際上循環(huán)了55 次(i = 0時(shí),j有10種可能,即10次循環(huán);i = 1、2、3、4時(shí),也有10種可能,一共加起來(lái)則有50次,最后加上i=5時(shí)的5次,共55次),num則為55。 var num = 0; outermost: for (var i = 0; i < 10; i ++){ for (var j = 0; j < 10; j ++){ if (i == 5 && j == 5){ continue outermost; } num ++; } } document.write(num); //95 //當(dāng)i = 5時(shí)且j = 5時(shí),將會(huì)從頭開(kāi)始循環(huán),也就是跳過(guò)了i = 5,j = 5、6、7、8、9這5種可能,并且繼續(xù)循環(huán)。所以就是100種可能減去這5種可能,則結(jié)果是num = 95。with 語(yǔ)句
該語(yǔ)句的作用是將代碼的作用域設(shè)置到一個(gè)特定的對(duì)象中。with 語(yǔ)句的語(yǔ)法如下:
with (expression) statement
舉例:
with (location){ var qs = search.substring(1); var hostName = hostname; var url = href; }
上面的寫(xiě)法就是從下面這個(gè)語(yǔ)句改過(guò)來(lái)的:
var qs = location.search.substring(1); var hostName = location.hostname; var url = location.href;
該語(yǔ)句會(huì)使性能下降,不建議使用
switch 語(yǔ)句語(yǔ)法如下,可以用來(lái)代替if 語(yǔ)句:
switch (expression) { case value: statement; break; case value: statement; break; case value: statement; break; default: statement; }
例子如下:
var i = 15; if (i == 25){ document.write("the num is 25"); }else if (i == 35){ document.write("the num is 35"); }else if (i == 15){ document.write("the num is 15"); }else { document.write("others") }
上面的if 語(yǔ)句就可以寫(xiě)成下面的switch 語(yǔ)句:
switch(15){ case 15: //相當(dāng)于if 語(yǔ)句中的else if document.write("15"); break; case 25: document.write("25"); break; case 35: document.write("35"); break; default: //相當(dāng)于if 語(yǔ)句中的else document.write("others"); }
為每個(gè)case 后面都添加一個(gè)break 語(yǔ)句,就可以避免同時(shí)執(zhí)行多個(gè)case 代碼的情況。
當(dāng)一種情況和另一種情況所產(chǎn)生的結(jié)果需要合并又該如何操作呢:
switch(15){ case 15: //相當(dāng)于if 語(yǔ)句中的else if document.write("15"); // break; 這里忽略了break 就可以讓case 15 與case 25 合并,在這里就是同時(shí)執(zhí)行document.write("15") 和document.write("25") case 25: document.write("25"); break; case 35: document.write("35"); break; default: //相當(dāng)于if 語(yǔ)句中的else document.write("others"); }
具體的來(lái)說(shuō)就是,如果需要混合幾種情形,只需要省略break 關(guān)鍵字即可。但不要忘了在代碼中添加注釋說(shuō)明是有意省略了break 關(guān)鍵字如:
switch (3){ case 1: document.write("the number is 1" + "
"); break; case 2: document.write("the number is 2" + "
"); break; case 3: //合并兩種情形 case 4: document.write("the number is unknown" + "
"); }//"the number is unknown"
另外,switch 語(yǔ)句可以使用任何數(shù)據(jù)類(lèi)型,每個(gè)case 的值甚至還可以是變量和表達(dá)式。如:
var x = "oliver young" switch (x){ case "oliver " + "young": document.write("hello Mr.young."); break; case "troy": document.write("hello troy."); break; default: document.write("sorry, i didn"t know you."); } //"hello Mr.young."
或者:
var num = 10; switch(num){ case 100 - 90: document.write("right"); break; case 100%10: document.write("also right"); break; default: document.write("bad num"); } //"right"
又或者:(注意switch(true))
var num = 8; switch(true){ case num.toString(10) === 8: document.write("true num"); break; default: document.write("wrong num"); } //"wrong num"
上面這個(gè)例子中,之所以要給switch() 傳值true,就是為了使得每個(gè)case 值都可以返回一個(gè)布爾值。這樣,每個(gè)case 按照順序被求值,直到遇到匹配的值或者遇到default 語(yǔ)句為止。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/86152.html
摘要:函數(shù)函數(shù)的基本語(yǔ)法是下面是個(gè)示例另外,任何函數(shù)在任何時(shí)候都可以通過(guò)語(yǔ)句后跟要返回的值來(lái)實(shí)現(xiàn)返回值。如另外,可以與命名參數(shù)一起使用。如不會(huì)執(zhí)行第一個(gè)函數(shù)兩個(gè)參數(shù)相加,只執(zhí)行最后一個(gè)同名的函數(shù)第一個(gè)參數(shù)加上 函數(shù) 函數(shù)的基本語(yǔ)法是: function functionName(arg0,arg1,...,argN) { statements } 下面是個(gè)示例: function...
摘要:瀏覽器如何將數(shù)據(jù)發(fā)送給服務(wù)器對(duì)表單字段的名稱(chēng)和值進(jìn)行編碼,使用和號(hào)分隔不發(fā)送禁用的表單字段只發(fā)送勾選的復(fù)選框和單選按鈕不發(fā)送為和的按鈕多選框中每個(gè)選中的值單獨(dú)一個(gè)條目在單擊提交按鈕提交表單的情況下,也會(huì)發(fā)送提交按鈕。否則不發(fā)送提交按鈕。 瀏覽器如何將數(shù)據(jù)發(fā)送給服務(wù)器: 對(duì)表單字段的名稱(chēng)和值進(jìn)行URL編碼,使用和號(hào)(&)分隔 不發(fā)送禁用的表單字段 只發(fā)送勾選的復(fù)選框和單選按鈕 不發(fā)送t...
摘要:所以,全局執(zhí)行環(huán)境的變量對(duì)象始終都是作用域鏈中的最后一個(gè)對(duì)象。搜索過(guò)程從作用域鏈的最前端開(kāi)始,逐級(jí)向后回溯,直到找到標(biāo)識(shí)符為止。查詢(xún)標(biāo)識(shí)符搜索過(guò)程就是沿作用域鏈向上查詢(xún)的過(guò)程。 執(zhí)行環(huán)境 執(zhí)行環(huán)境就是環(huán)境,是js中最重要的概念。執(zhí)行環(huán)境定義了變量或函數(shù)有權(quán)訪問(wèn)的其他數(shù)據(jù)。每個(gè)執(zhí)行環(huán)境都有一個(gè)與之相關(guān)的變量對(duì)象(我們編寫(xiě)的代碼無(wú)法訪問(wèn)這個(gè)對(duì)象)。 全局執(zhí)行環(huán)境(是最外圍的執(zhí)行環(huán)境。在W...
摘要:模仿塊級(jí)作用域在塊級(jí)語(yǔ)句中定義的變量,實(shí)際上是包含函數(shù)中而非語(yǔ)句中創(chuàng)建的。避免對(duì)全局作用域產(chǎn)生不良影響這種方式可以通過(guò)創(chuàng)建私有作用域,避免對(duì)全局作用域產(chǎn)生不良影響。一般包括函數(shù)的參數(shù)局部變量和內(nèi)部定義的其他函數(shù)。 模仿塊級(jí)作用域 在塊級(jí)語(yǔ)句中定義的變量,實(shí)際上是包含函數(shù)中而非語(yǔ)句中創(chuàng)建的。如: function outputNumbers(x){ for (var i = 0;...
摘要:注意作用域避免全局查找以上代碼應(yīng)該修改如下避免語(yǔ)句必須使用語(yǔ)句的情況很少,因?yàn)樗饕糜谙~外的字符。將代碼分離稱(chēng)多個(gè)文件只是為了提高可維護(hù)性,并非為了部署。要進(jìn)行部署的時(shí)候,需要將這些源代碼合并為一個(gè)或幾個(gè)歸并文件。 注意作用域 避免全局查找 function updateUI () { var images = document.getElementsByTagName(...
閱讀 1368·2021-09-13 10:25
閱讀 552·2019-08-30 15:53
閱讀 2265·2019-08-30 15:44
閱讀 2026·2019-08-29 17:20
閱讀 1594·2019-08-29 16:36
閱讀 1795·2019-08-29 14:10
閱讀 1785·2019-08-29 12:44
閱讀 1166·2019-08-23 14:13