在編程語(yǔ)言中語(yǔ)句通常使用一個(gè)或多個(gè)關(guān)鍵字來完成特定的任務(wù)。比如定義變量、賦值、條件判斷、循環(huán)等語(yǔ)句。下面我們將介紹JavaScript中大部分常用的語(yǔ)句,主要分以下幾類:
- 聲明和賦值語(yǔ)句
- 條件語(yǔ)句
- 循環(huán)語(yǔ)句
- 其它語(yǔ)句
聲明和賦值語(yǔ)句
這類語(yǔ)句是最基本的,比如聲明一個(gè)變量且給變量賦值,如下示例:
var myName,otherName; // 聲明變量語(yǔ)句myName = “hello world”; // 賦值語(yǔ)句otherName = “你好”; // 賦值語(yǔ)句
可以使用var 、let 及 const 關(guān)鍵字聲明一個(gè)變量,使用“=”等號(hào)給變量進(jìn)行賦值。
條件語(yǔ)句
條件語(yǔ)句主要用來處理邏輯判斷,在編程中經(jīng)常使用,隨時(shí)都要用到條件語(yǔ)句進(jìn)行邏輯選擇,其有以下幾種:
- if 語(yǔ)句 (如果…)
if…else 語(yǔ)句 (如果… 否則…)
if (條件表達(dá)式) {// 代碼塊……}else{// 代碼塊……}
if…else if… else(如果… 或如果… 否則…)
if (條件表達(dá)式) {// 代碼塊……} else if(條件表達(dá)式){// 代碼塊……}else{// 代碼塊……}
switch 語(yǔ)句 (類似if…else if…else)
switch(表達(dá)式){ case value: // 代碼塊…. break; case value: // 代碼塊…. break; case value: // 代碼塊…. break; default: // 代碼塊….}
我們通過幾個(gè)示例看看如何使用條件語(yǔ)句,如下示例:
let a = 1,b=5;// if 語(yǔ)句,當(dāng)條件表達(dá)式 a < b 結(jié)果為true 時(shí)執(zhí)行對(duì)應(yīng){}中的代碼if(a < b){alert("a 小于 b")}// 使用 else ,當(dāng) a < b 結(jié)果為false時(shí)執(zhí)行else對(duì)應(yīng){}中的代碼if(a < b){alert("a 小于 b")}else{alert("a 大于 b")}
當(dāng)你要判斷的條件可能性比較多時(shí)就需要使用 if … else if … else 了,如下示例:
let a = 1, b=5,c=10;if(a<b){ // 如果 a小于balert("a 小于 b")} else if( a < c){ // 如果a小于calert("a 小于 c")} else if( b < c){ // 如果b小于calert("b 小于 c")} else if( a == b){ // 如果a等于balert("a等于b")} else { // 除了以上幾種情況alert("其它情況")}
上面的語(yǔ)句也可以使用 switch 語(yǔ)句,如下示例:
let a = 1, b=5,c=10;switch(true) { case a<b: // 如果 a小于b alert("a 小于 b") break; case a<c: // 如果a小于c alert("a 小于 c") break; case b<c: // 如果b小于c alert("b 小于 c") break; case a==b: // 如果a等于b alert("a 等于 b") break; default: // 除了以上幾種情況 alert("其它情況")}
關(guān)于條件語(yǔ)句,需要注意幾點(diǎn):
- 條件表達(dá)式可以是任何表達(dá)式,JavaScript會(huì)自動(dòng)將其結(jié)果轉(zhuǎn)化成Boolean類型值。
- else if 可以有很多個(gè),根據(jù)實(shí)際邏輯判斷而定。
- if 語(yǔ)句對(duì)應(yīng){}中的代碼如果只有一行時(shí),可以省略{},但是建議不要這樣做,最好都帶上{}。
- switch 語(yǔ)句中的break 也是一個(gè)語(yǔ)句,它不是必需的,其含義是指當(dāng)前case 對(duì)應(yīng)的表達(dá)式求值完后不再繼續(xù)向下求值,如下示例:
switch(a){ case 0: alert(“如果a等于0時(shí)”); case 10: alert(“如果a等于10時(shí)”); break; case 15: alert(“如果等于15時(shí)”); break; default: alert(“其它”);}
上面當(dāng)case 0 時(shí),switch 語(yǔ)句不會(huì)停止,而是繼續(xù)向下執(zhí)行case 10,直到case 10 中的break語(yǔ)句才結(jié)束。也就是說 a 和 0 比較后,繼續(xù)和 10 做比較,這樣就可以實(shí)現(xiàn)和多個(gè)條件比較,相當(dāng)于 if( a ==0 || a == 10) {}。
循環(huán)語(yǔ)句
此類語(yǔ)句也是經(jīng)常使用到的,在編程中經(jīng)常需要重復(fù)計(jì)算一些東西,這時(shí)就需要循環(huán)語(yǔ)句。循環(huán)語(yǔ)句,都會(huì)有一個(gè)條件表達(dá)式如同if語(yǔ)句一樣,這里含義是指當(dāng)條件表達(dá)式值為true時(shí)結(jié)束循環(huán)。
JavaScript中有以下幾種:
do – while 語(yǔ)句
這是一種后測(cè)試循環(huán)語(yǔ)句,通俗講就是先執(zhí)行循環(huán)體中的代碼,再判斷循環(huán)中的條件表達(dá)式,也就是在條件表達(dá)式求值前,至少循環(huán)體內(nèi)的代碼執(zhí)行了一次,語(yǔ)法如下:
do {// 代碼塊} while (條件表達(dá)式)
示例如下:
var i = 0;do{i += 2;} while ( i < 10 )
while 語(yǔ)句
這個(gè)語(yǔ)句和 do-while 語(yǔ)句正好相反,是前測(cè)試循環(huán)語(yǔ)句,就是先求表達(dá)式的值,然后再去執(zhí)行循環(huán)體中的代碼,因此如果表達(dá)式值為false,其循環(huán)體就不會(huì)執(zhí)行,while語(yǔ)句有可能永遠(yuǎn)都不會(huì)執(zhí)行。
語(yǔ)法如下:
while (條件表達(dá)式){// 代碼塊}
示例如下:
var i = 0;while ( i < 10){i + = 2;}
for 語(yǔ)句
for 語(yǔ)句也是一種前測(cè)試循環(huán)語(yǔ)句,它不同之處是可以再執(zhí)行循環(huán)體之前定義并初始化變量和定義循環(huán)后要執(zhí)行的代碼,語(yǔ)法如下:
for( 初始變量; 條件表達(dá)式; 循環(huán)后執(zhí)行的表達(dá)式;){// 代碼塊}
for 循環(huán)中括號(hào)里面,條件表達(dá)式是必需的,其它2個(gè)表達(dá)式可以沒有。且初始化部分的變量可以是一個(gè)外部變量。
示例1:
// 循環(huán)打印出1 到 100for( var i =0; i<100: i++){console.log(i+1); // 因?yàn)槌跏际?,所以這里加1,當(dāng)然你也可以把i的初始值設(shè)置為1}
示例2:
// 只有條件表達(dá)式,這個(gè)類似于while語(yǔ)句了,一般不建議這樣寫var count = 10;var i = 0;for( ; i<count; ){console.log(i); i++;}
示例3:
// 無限循環(huán),這種情況沒有任何意義,不建議使用for( ; ; ){console.log(”);}
for 循環(huán)語(yǔ)句是平時(shí)使用較多的語(yǔ)句,像do-while 和 while 都很少使用,因?yàn)?for 語(yǔ)句更加靈活,建議使用。
for in 語(yǔ)句
這是一種精準(zhǔn)的迭代語(yǔ)句,和for 語(yǔ)句不同之處是它往往用來迭代一個(gè)對(duì)象中的屬性,對(duì)于由鍵值對(duì)組成的對(duì)象類型而言使用for語(yǔ)句就顯得不適用了,for in 語(yǔ)句語(yǔ)法如下:
for (key in object) {// 代碼塊}
如上key 值對(duì)象中的屬性名稱,object 就是一個(gè)對(duì)象,這個(gè)對(duì)象可以是JavaScript中的object類型或者dom 節(jié)點(diǎn)等。
示例如下:
var obj = {a: 0, b: 1, c: 2, d: 3}// 迭代obj對(duì)象for (key in obj) {console.log(key); // 輸出屬性名稱 console.log(obj[key]); // 輸出對(duì)應(yīng)的屬性值}// 結(jié)果如下// a、b、c、d// 0、1、2、3
注意 for in 中的對(duì)象不能是 null 或 undefined,否則會(huì)拋出錯(cuò)誤。雖然在 ECMAScript 5 中不會(huì)拋出錯(cuò)誤,只是不執(zhí)行循環(huán)體而已,所以在寫代碼之前,判斷迭代的對(duì)象是否是null或undefined。
break 和 continue 語(yǔ)句
這2個(gè)語(yǔ)句,通常配合循環(huán)語(yǔ)句使用。break 是指立即結(jié)束當(dāng)前循環(huán),退出循環(huán)體,continue 指不執(zhí)行本次循環(huán)體直接跳過,繼續(xù)執(zhí)行下次循環(huán)。
示例如下:
// 使用break var num = 0;for( var i=0; i< 10; i++){ // 當(dāng)i==5 時(shí) 立即結(jié)束循環(huán)if( i % 5 == 0) { break; } num ++ ;}alert(num); // 結(jié)果是 4// 使用 continue var num = 0;for( var i=0; i< 10; i++){ // 當(dāng)i==5 時(shí) 跳過本次循環(huán),繼續(xù)下次循環(huán)if( i % 5 == 0) { continue ; } num ++ ;}alert(num); // 結(jié)果是 8
with 語(yǔ)句
這個(gè)語(yǔ)句不經(jīng)常使用,它的作用是將代碼的作用域設(shè)置到一個(gè)特定的對(duì)象中。語(yǔ)法如下:
with (表達(dá)式) {// 代碼}
我們通過一個(gè)示例,看看它到底是干什么的:
var gs = location.search.substring(1);var hostname = location.hostname;var url = location.href;
上面的代碼是一段用來獲取瀏覽器信息的,分別獲取了3個(gè)對(duì)象,我們下面使用with語(yǔ)句簡(jiǎn)化這段代碼:
with(location){var gs = search.substring(1); var hostname = hostname; var url = href;}
是不是方便了很多,with 將其作用于設(shè)置為location對(duì)象,這樣就不必每次使用location對(duì)象取值。
但是在實(shí)際使用中,不建議使用with語(yǔ)句,因?yàn)樗鼤?huì)導(dǎo)致性能下降,同時(shí)不易閱讀和調(diào)試。
結(jié)語(yǔ)
本節(jié)學(xué)習(xí)了JavaScript中語(yǔ)句的使用,主要分條件、循環(huán)、定義賦值等語(yǔ)句。語(yǔ)句是編程語(yǔ)言中重要的組成部分,相當(dāng)于你要寫一篇作文,沒有語(yǔ)句是不行的,不然整篇作文將無法閱讀,計(jì)算機(jī)語(yǔ)言也是如此。
到此,已經(jīng)學(xué)習(xí)了JavaScript中的大部分內(nèi)容,現(xiàn)在你可以寫一些簡(jiǎn)單的腳本了,快試試吧。