JavaScript Expressions VS Statements

了解 JavaScript 運算式與表達式

Expressions 表達式

表達式產生一個值
  • 1 產生值 1
  • 你好 產生值 你好
  • 5 * 10 產生值 50
  • age >= 18 產生值 truefalse
  • isHappy ? "🙂" : "🙁" 產生值 🙂🙁
  • (function () { return 'Hi'; }()) 產生值 Hi
  • ({a: 1}) 產生值 {a: 1}

Statements 運算式

執行動作完成任務

運算是就像是指令,使用它會執行一些預定的動作。有運算式的地方都可以輸入表達式

// 指派 `5` 到 `age` 變數
const age = 5;
// 如果 `age` 大於等於 18,就執行 ...
if (age >= 18) {
// ...
}

表達式與運算式

表達式本身是個值,並不能單獨的存在,它必須永遠存在於某個運算式中。此外在特殊的情況下你會需要使用 ()🔗 來包覆表達式,否則 JavaScript 會錯誤的將其當作運算式。

// IIFE
(function () {
// ...
})();
// Return Object
const f = () => ({ a: 1 });

總結

還有一個簡單的方法辨別表達式與運算式,就是把它們丟進 console.log,如果無語法錯誤且能執行就是「表達式」,反之就是「運算式」(或單純是不合規的語法)。我回過頭來才發現表達式與運算式的重要性,特別是像在寫 React / JSX 這類框架上的一些奇怪的限制,像是:「只能回傳一個元素」、「為什麼要用表達式來撰寫?」,實際上是 JavaScript 本身運作上的限制。

參考文章