js程序無(wú)非就是一個(gè)以分號(hào)分隔2的語(yǔ)句集合迁杨。
5語(yǔ)句
條件語(yǔ)句(if switch)
循環(huán)語(yǔ)句 (for while)
跳轉(zhuǎn)語(yǔ)句 (break return throw)
空語(yǔ)句
//初始化一個(gè)數(shù)組a
for(var i =0; i < a.length; a[i++] = 0) /* empty */ ;
5.3 聲明語(yǔ)句
var function聲明變量冗尤、函數(shù)
函數(shù)聲明只能出現(xiàn)在js代碼最頂層灌危,也可以嵌套在其他函數(shù)體內(nèi)(也必須在頂部)
5.4 條件語(yǔ)句
5.4.1
if(sxpression)
statement 1
else
statement2
5.4.2
switch(expression){
case expression:
//代碼塊
break;
}
用break或return(函數(shù)中)終止
如沒(méi)有break澡屡,會(huì)從匹配到的case向下逐個(gè)執(zhí)行,直到結(jié)尾
表達(dá)式匹配是按 ===(恒等運(yùn)算符) 來(lái)匹配歧沪,表達(dá)式和case的匹配并不會(huì)做人任何類型轉(zhuǎn)換晃虫。
5.5 循環(huán)
5.5.1 while
while(){
}
5.5.2 do while
do{
}while()
5.5.3 for
for(初始化操作者荠商;循環(huán)判斷條件寂恬;計(jì)數(shù)器變量的更新)
5.5.4 for/ in
for(variable in object)
statement(語(yǔ)句或語(yǔ)句塊)
variable(一個(gè)變量或者表達(dá)式)
var o = {name:'smy',sex:'女'};
var arr = [];
i = 0;
for(arr[i++] in o);
console.log(arr); //['name','sex']
for(var i = 0;i < arr.length;i++){
console.log(o[arr[i]]) // smy 女
}
5.6 跳轉(zhuǎn)
break跳轉(zhuǎn)到循環(huán)或者其他語(yǔ)句的結(jié)束
continue 是終止本次循環(huán)的執(zhí)行并開(kāi)始下一次循環(huán)的執(zhí)行。
return 跳出函數(shù)體莱没,并提供返回值
throw 觸發(fā)或 ‘拋出’異常
5.6.1 標(biāo)簽語(yǔ)句
identifier :statement
break/continue 可以使用標(biāo)簽語(yǔ)句
statement可以是普通語(yǔ)句也可以是代碼塊
test: for (var i = 0; i < 3; i++) {
console.log('visible');
continue test; //continue跳出本次循環(huán)進(jìn)行下次循環(huán)初肉,break跳出整個(gè)循環(huán)
console.log('invisible');
}
5.6.2 break
立即退出最內(nèi)層循環(huán)或switch
5.6.3 continue
不退出循環(huán),而是轉(zhuǎn)而執(zhí)行下一次循環(huán)饰躲。
5.6.4 return
5.6.5 throw
5.6.7 try/catch/finally
try{
}
catch(e){
//try拋出異常牙咏,執(zhí)行這里代碼
}
finally{
}
//try中有return臼隔,continue,break跳轉(zhuǎn)語(yǔ)句妄壶,在跳出之前摔握,先執(zhí)行finally
如若有異常,而且與try語(yǔ)句相關(guān)的catch不是處理這個(gè)異常的丁寄,先執(zhí)行finally氨淌,再向上匹配
var foo = function () {
try{
//拋出一個(gè)異常
}
finally {
return 1;
}
};
foo(); //1
5.7 其他語(yǔ)句類型