陳述式是JavaScript的語句類型,用於命令、執行的一系列操作,最大的特徵是不會回傳結果。
要特別注意的是,undefined不算回傳結果,如果程式碼會回傳undefined的話,屬於陳述式。
因為陳述式不會回傳值,所以不可以賦值在任何變數上,會出現錯誤。
流程控制(ex:block(區塊)、if...else
)
宣告(var
、let
、const
)
函式(具名函式)
迴圈(ex:for
)
又稱表示式、運算式,經常透過運算子結合上下語句,並運算及回傳結果。
可以在Chrome的Console內輸入運算式,只要會回傳結果,就是表達式。
ex:
3 + 4; //+是運算子
簡單的說,只要任何一段可以取得一個值的程式碼,都屬於表達式,和陳述式的差異,就在於是否會回傳值。會回傳值的,是表達式,不會的,屬於陳述式。
此外,表達式或陳述式不一定是完整的語句,只要可以表達出陳述式或表達式特點的程式碼片段,都能區分成表達式或是運算式其中一種。
其中,有幾種特別相似的程式碼,非常容易混淆,列舉如下:
具名函式
又稱函式陳述式,顧名思義,屬於陳述式。
寫法是直接宣告一個函式,並給予名稱。
function test(){
console.log("test");
}
匿名函式
又稱函式表達式,可以賦值,屬於表達式。
寫法是先宣告一個變數,直接在後接不用命名的函式,用半形等號(=
)賦值給前方的變數。
var test = function test(){
console.log("test");
}
區塊
屬於陳述式,所以不可賦值給變數。
寫法如下:
{
var boy = "Jason";
}
可以用const
這個ES6才出現的定義變數方法,定義的變數會只作用在區塊內。
{
const boy = "Jason";
}
物件實字
屬於表達式,是JavaScript一種定義物件的方法。
寫法如下:
{
boy: "Jason"
}
因為是表達式,所以可以賦值給變數。
var kid = {
boy: "Jason"
}