iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
1
Modern Web

JS讀書筆記系列 第 15

JS讀書筆記30天 - Day15 陳述式與表達式

陳述式(Statement)

定義

陳述式是JavaScript的語句類型,用於命令、執行的一系列操作,最大的特徵是不會回傳結果。

要特別注意的是,undefined不算回傳結果,如果程式碼會回傳undefined的話,屬於陳述式。

因為陳述式不會回傳值,所以不可以賦值在任何變數上,會出現錯誤。

分類

  1. 流程控制(ex:block(區塊)、if...else

  2. 宣告(varletconst

  3. 函式(具名函式)

  4. 迴圈(ex:for

表達式(Expression)

定義

又稱表示式、運算式,經常透過運算子結合上下語句,並運算及回傳結果。

可以在Chrome的Console內輸入運算式,只要會回傳結果,就是表達式。

ex:

3 + 4; //+是運算子

分類

  1. 算數
  2. 字串
  3. 邏輯
  4. 其他會回傳值的程式碼(undefined不算)

陳述式與表達式的區分

簡單的說,只要任何一段可以取得一個值的程式碼,都屬於表達式,和陳述式的差異,就在於是否會回傳值。會回傳值的,是表達式,不會的,屬於陳述式。

此外,表達式或陳述式不一定是完整的語句,只要可以表達出陳述式或表達式特點的程式碼片段,都能區分成表達式或是運算式其中一種。

其中,有幾種特別相似的程式碼,非常容易混淆,列舉如下:

具名函式與匿名函式

  1. 具名函式

    又稱函式陳述式,顧名思義,屬於陳述式。

    寫法是直接宣告一個函式,並給予名稱。

    function test(){
      console.log("test");
    }
    
  2. 匿名函式

    又稱函式表達式,可以賦值,屬於表達式。

    寫法是先宣告一個變數,直接在後接不用命名的函式,用半形等號(=)賦值給前方的變數。

    var test = function test(){
     console.log("test");
    }
    

區塊與物件實字

  1. 區塊

    屬於陳述式,所以不可賦值給變數。

    寫法如下:

    {
      var boy = "Jason";
    }
    

    可以用const這個ES6才出現的定義變數方法,定義的變數會只作用在區塊內。

    {
      const boy = "Jason";
    }
    
  2. 物件實字

    屬於表達式,是JavaScript一種定義物件的方法。

    寫法如下:

    {
      boy: "Jason"
    }
    

    因為是表達式,所以可以賦值給變數。

    var kid = {
      boy: "Jason"
    }
    

上一篇
JS讀書筆記30天 - Day14 記憶體與環境
下一篇
JS讀書筆記30天 - Day16 物件2
系列文
JS讀書筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
sky030
iT邦新手 5 級 ‧ 2024-01-12 14:48:22

感覺匿名函式那邊把test拿掉會比較符合~

我要留言

立即登入留言