#第5章 語句
- <a href="#no1">5.1 表達式語句</a>
- <a href="#no2">5.2 復合語句和空語句</a>
- <a href="#no3">5.3 聲明語句</a>
- <a href="#no4">5.4 條件語句</a>
- <a href="#no5">5.5 循環</a>
- <a href="#no6">5.6 跳轉</a>
- <a href="#no7">5.7 其他語句類型</a>
- <a href="#no8">5.8 JavaScript語句小結</a>
###**表達式在JS中是短語,那么語句就是JS整句或命令。**
- 條件語句:JS解釋器可以根據一個表達式的值來判斷是執行還是跳過這些語句,如`if`語句和`switch`語句。
- 循環語句:可以重復執行語句,如`while`和`for`語句。
- 跳轉語句:可以讓解釋器跳轉至程序的其他部門繼續執行,如`break`、`return`和`throw`語句。
##<a name="no1">5.1 表達式語句</a>
> 具有副作用的表達式是JS中最簡單的語句。
##<a name="no2">5.2 復合語句和空語句</a>
> 可以用逗號運算符將幾個表達式連接在一起,形成一個表達式,同樣,JS中還可以將多條語句聯合在一起,形成一條復合語句。只需要用花括號將多條語句括起來即可。
1. 語句結尾不需要分號。塊中的原始語句必須以分號結束,但語句塊不需要。
2. 語句塊中的行都有縮進,這不是必須的,但是能提高代碼可讀性。
> 空語句:允許包含0條語句的語句。
如下所示:
;
##<a name="no3">5.3 聲明語句</a>
> `var`和`function`都是聲明語句,它們聲明或定義變量或函數。
###5.3.1 var
> `var`語句用來聲明一個或多個變量。語法如下:
var name_1 [ = value_1][,...,name_n [ = value_n]]
**var 聲明的變量是無法通過 delete 刪除的。**
> 如果`var`語句中的變量沒有指定初始化表達式,那么這個變量的值初始為`undefined`。
###5.3.2 function
> 關鍵字`function`用來定義函數。語法如下:
function funcname([arg1[, arg2 [..., argn]]]){
statements
}
**盡管函數聲明語句和函數定義表達式包含相同的函數名,但二者仍然不同。兩種方式都創建了新的函數對象,但函數聲明語句中的函數名是一個變量名,變量指向函數對象。使用`var`的話,只有變量聲明提前了——變量的初始化代碼仍然在原來的位置。然而使用函數聲明語句的話,函數名稱和函數體均提前。**
##<a name="no4">5.4 條件語句</a>
> 條件語句是通過判斷指定表達式的值來決定執行還是跳過某些語句。
###5.4.1 if
if(expression)
statement
###5.4.2 else if
if(n == 1){
//執行代碼1
}else if(n == 2){
//執行代碼2
}else{
//之前的條件都為false,則執行這里的代碼塊
}
###5.4.3 switch
switch(n){
case 1:
// 執行代碼塊1
break;
case 2:
// 執行代碼塊2
break;
case 3:
// 執行代碼塊3
break;
default:
// 執行代碼塊4
break;
}
##<a name="no5">5.5 循環</a>
###5.5.1 while
while(expression){
statement
}
###5.5.2 do/while
do
statement
while(expression)
###5.5.3 for
for(initialize; test; increment)
statement
###5.5.4 for/in
for(variable in object)
statement
##<a name="no6">5.6 跳轉</a>
> 跳轉語句可以使JS執行從一個位置跳轉到另一個位置。
###5.6.1 標簽語句
> 語句是可以添加標簽的,標簽是由語句前的標識符和冒號組成:
identifier: statement
###5.6.2 break語句
> 單獨使用`break`語句的作用是立即退出最內層的循環或`switch`語句。
break;
###5.6.3 continue語句
> `continue`語句和`break`語句非常類似,但它不是退出循環,而是轉而執行下一次循環。
continue;
###5.6.4 rerturn語句
> 函數中的`return`語句即是指定函數調用后的返回值。
return expression;
**return語句只能在函數體內出現,否則就會報語法錯誤。**
###5.6.5 throw語句
throw expression;
###5.6.6 try/catch/finally語句
> `try/catch/finally`語句語句是JS的異常處理機制。其中`try`從句定義了需要處理的異常所在代碼。`catch`從句跟隨在`try`從句之后,當`try`塊內某處發生了異常時,調用`catch`內的代碼邏輯。`catch`從句后跟隨`finally`塊,后者中放置清理代碼,不管`try`塊中是否產生異常,`finally`塊內的邏輯總是會執行。
try{
//通常來講,這里的代碼會從頭執行到尾而不會產生任何問題。
//但有時會拋出一個異常,要么是由throw語句直接拋出異常,
//要么就是通過調用一個方法間接拋出異常
}
catch(e){
//當且僅當try語句塊拋出了異常,才會執行這里的代碼
//這里可以通過局部變量e來獲得對Error對象或者拋出的其他值的引用
//這里的代碼塊可以基于某種原因處理這個異常,也可以忽略這個異常
//還可以通過throw語句重新拋出異常
}
finally{
//不管try語句塊是否拋出了異常,這里的邏輯總是會執行,終止try語句塊的方式有:
// 1、正常終止,執行完語句塊的最后一條語句
// 2、通過break、continue或return語句終止
// 3、拋出一個異常,異常被catch從句捕獲
// 4、拋出一個異常,異常未被捕獲,繼續向上傳播
}
##<a name="no7">5.7 其他語句類型</a>
###5.7.1 with語句
> `with`語句用于臨時擴展作用域鏈。語法如下:
with(object)
statement //這條語句將object添加到作用域鏈的的頭部,然后執行statement,最后把作用域鏈恢復到初始狀態。
###5.7.2 debugger語句
> `debugger`語句用來產生一個斷點。
###5.7.3 “use strict”
> 使用`use strict`指令的目的是說明(腳本或函數中)后續的代碼將會解析為嚴格代碼。
##<a name="no8">5.8 JavaScript語句小結</a>
> 略 **P116-117列出了每種語句的語法和用途**