iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
Modern Web

我的JavaScript日常系列 第 21

JavaScript Day 21. 陳述式 & 表達式

  • 分享至 

  • xImage
  •  

聽說 JavaScript 的這兩大類型「陳述式」與「表達式」也是很基本的觀念,瞬間我感覺自己從來沒有認真搞懂的基本觀念真的不少,難怪每寫一篇文章都會有豁然開朗的感受;那麼今天依然繼續穩固自己的基本觀念。

這裡會劃分五個區塊來做討論:

  • 陳述式(Statement)
  • 表達式 (Expression)
  • 函式陳述式 (Function Statement)
  • 函式表達式 (Function Expression)

陳述式 ( Statement )

會執行一些程式碼,但不會回傳結果,所以當預期這個地方要回傳值,就不能使用陳述式。

常見的陳述式:

  1. Block ( 區塊 )
  2. break ( 中斷迴圈 )
  3. if else ( 判斷式 )
  4. var、let、const ( 宣告 )
  5. function ( 指定一個函式,函式陳述式 )
  6. for ( 迴圈 )

陳述式可能是幾個單詞或是一個片段,但不會是一個字母,其中也會與表達式混合,因此會像下面這個範例:var dog,即是陳述式。

var dog;

另外要談到 {} 這個大括號,他代表的是「物件」,因此如果只是放上這個大括號也不代表陳述式,必須在裡面加入一段程式碼才能成立陳述式的概念。

{
	console.log(dog);
}

這裡要特別為區塊陳述 ( Block ) 做一些說明,就像 if 區塊一樣,他會在裡面運作,但卻不會回傳結果,區塊陳述類似這樣的概念。

表達式 ( Expression )

又可被稱為表示式、運算式,表達式的特點就是會回傳一個結果,任何可回傳結果都可以稱為表達式,常見的模式如下:

  • 純值
  • 變數
  • 運算子
  • 執行函式
  • 正規表達式
  • 函式表達式

如何判斷是否為表達式其實很簡單,假設我們輸入以下範例:

3 === 3

回傳的結果為 true,符合我們上面所說的,只要回傳結果都可以稱做表達式的條件,所以 3 === 3 即為表達式。

函式陳述式 (Function Statement)

也是「具名函式」,經由給定一個名字宣告一個變數,使 JavaScript 為這個變數保留記憶體空間,與陳述式的概念相同,不同在於函式陳述式會將整個函式內容,在解析的過程保留在記憶體空間,這個部分可以稱為「Hoisting ( 提升 )」,即是函式陳述式。

function callName(){}

函式表達式 (Function Expression)

函式表達式為「匿名函式」,使用一個變數,並且將函式賦予到變數上,中間插入一個 = 運算子;這種宣各方式的函式內容不會在一開始就被提升( Hoisting ),會被提升的( Hoisting )只有該變數而已,在執行階段才會把函式內容指派給變數,變數的指派屬於表達式。

var callName = function(){}

參考資料:

JS 原力覺醒 Day07 - 陳述式 表達式
JavaScript 表達式觀念及運用 - JS Expression


上一篇
JavaScript Day 20. BOM 與 DOM
下一篇
JavaScript Day 22. Hoisting
系列文
我的JavaScript日常31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言