聽說 JavaScript 的這兩大類型「陳述式」與「表達式」也是很基本的觀念,瞬間我感覺自己從來沒有認真搞懂的基本觀念真的不少,難怪每寫一篇文章都會有豁然開朗的感受;那麼今天依然繼續穩固自己的基本觀念。
這裡會劃分五個區塊來做討論:
會執行一些程式碼,但不會回傳結果,所以當預期這個地方要回傳值,就不能使用陳述式。
常見的陳述式:
陳述式可能是幾個單詞或是一個片段,但不會是一個字母,其中也會與表達式混合,因此會像下面這個範例:var dog
,即是陳述式。
var dog;
另外要談到 {} 這個大括號,他代表的是「物件」,因此如果只是放上這個大括號也不代表陳述式,必須在裡面加入一段程式碼才能成立陳述式的概念。
{
console.log(dog);
}
這裡要特別為區塊陳述 ( Block ) 做一些說明,就像 if 區塊一樣,他會在裡面運作,但卻不會回傳結果,區塊陳述類似這樣的概念。
又可被稱為表示式、運算式,表達式的特點就是會回傳一個結果,任何可回傳結果都可以稱為表達式,常見的模式如下:
如何判斷是否為表達式其實很簡單,假設我們輸入以下範例:
3 === 3
回傳的結果為 true
,符合我們上面所說的,只要回傳結果都可以稱做表達式的條件,所以 3 === 3
即為表達式。
也是「具名函式」,經由給定一個名字宣告一個變數,使 JavaScript 為這個變數保留記憶體空間,與陳述式的概念相同,不同在於函式陳述式會將整個函式內容,在解析的過程保留在記憶體空間,這個部分可以稱為「Hoisting ( 提升 )」,即是函式陳述式。
function callName(){}
函式表達式為「匿名函式」,使用一個變數,並且將函式賦予到變數上,中間插入一個 =
運算子;這種宣各方式的函式內容不會在一開始就被提升( Hoisting ),會被提升的( Hoisting )只有該變數而已,在執行階段才會把函式內容指派給變數,變數的指派屬於表達式。
var callName = function(){}
參考資料:
JS 原力覺醒 Day07 - 陳述式 表達式
JavaScript 表達式觀念及運用 - JS Expression