---
# System prepended metadata

title: 何謂表達式(Expression)與陳述式(Statement)？

---

# 何謂表達式(Expression)與陳述式(Statement)？

JavaScript 有兩種語法分類：
陳述式(Statement) 又稱 語句 或 述句
表達式(Expression) 又稱 運算式 或 數學表達式

## :star: 陳述式 
JavaScript 應用程式由適當的陳述式組成。一個單一的陳述式可以跨用好幾行。 多個陳述式也可以藉由分號分隔來寫在同一行。 這不是一個關鍵字，而是一群關鍵字，由這些關鍵字使陳述式會產生一些動作，但是 **不會回傳值**。

> 讓瀏覽器知道要讓他做哪些動作，但是做完動作他會停在那裡等你給予下一個指令

### JS中常見的陳述式
* if 判斷式
* while 迴圈
* for 迴圈
* switch 判斷式
* 直接的函式宣告 function
* 變數宣告 var let const
```javascript=
// 變數宣告
let a ;
var b ;
const c ;

// while 迴圈
while (age == 21) {        //while小括號是表達式
    console.log("大學畢業")
}

// for 迴圈
for (let age = 5; age < 21; age++) {
    console.log("上學");
}

// if判斷式
if(haveMoney == true){     //if小括號()中的值是表達式，判斷陳述式是否執行動作
    console.log("財富自由") //{}中是陳述式  
} else {
    console.log("努力賺錢")
}

// function 函式
function learn(){
    console.log("學JS")
}


//以上都是陳述式，只有執行動作但是沒有回傳數值，因此很多都是跟表達式相互搭配
```

## :star: 表達式
表達式是一段 JS 直譯器能夠運算並產生數值的程式碼，通常會經過運算，簡單來說就是只要你輸入這段程式碼，可以形成一個值，且最終 **會回傳值的程式碼就算是表達式**。

>會回傳值結果給瀏覽器，讓他知道得到的數值或結果
### 常見的表達式
* 純值
* 變數
* 運算子
* 執行函式
* 正規表達式
* 函式表達式

```javascript=
// 純值
666  //回傳666
123  //回傳123

// 變數
let a = 1;
var b = 2 > 3;
const c = "字符串";

// 運算子
1 > 2  //false
1 + 3  //4
3 - 1  //2

// function 執行函式
function learn(){      //陳述式執行動作
    console.log("學JS")
}

learn();  //函式中呼叫的地方是表達式
```
## 總結
* 陳述式是為要做的動作做準備(為表達式做準備)，不會回傳值
* 表達式會執行指定動作，並且回傳執行動作完的結果


## 參考資料
https://ithelp.ithome.com.tw/articles/10218937
https://wcc723.github.io/development/2020/09/17/js-expression/
https://eyesofkids.gitbooks.io/javascript-start-from-es6/content/part3/controlflow.html
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Statements