陳述式(statement)
定義:單行程式碼,只有用來命令執行的功能,無法回傳值。
- 流程控制類:if、switch、break、continue、Block
- 宣告類:var、let、const
- 迴圈:do while、while、for
表達式(expression)
定義:單行程式碼,可以有值,可以利用chrom輸入該行程式碼,會出現結果。
詳細可以參考MDN的Expressions and operators
例子:
- 一元運算式:delete、typeof等,只有一個運算元。
- 二元運算式:加減乘除跟%,2個運算元及一個運算子。
- 三元運算式:(condition ? (True) : (False)),3個運算元及2個運算子?跟:。
函式陳述式(Function statement)
樣態:代表此類函數需要呼叫才會回傳一個值,且在創造階段就被存在記憶體裡面,且通常需要被命名。
下面的function函式被宣告為Name,此類函式稱函式陳述式,或稱為具名函式,函式陳述式皆需命名才有作用,不然就是透過IIFE立即函式來執行。
function Name(){
console.log('執行')
}
Name(); //執行
直接打函式陳述式的名字即可執行。
函式表達式(Function expression)
樣態:把函式function當作一個物件(object type)並把值(此值為heap memory的address)賦給予變數(LHS行為),這個新函式就稱為函式表達式,在執行階段才會有這個建立。
下面的函式未予命名的稱為匿名函式。
var she = function"無名"(){
.......
}
此時變數she接收到的是function的address,且函式在這邊為物件型式(object type)。