# 何謂表達式(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
{"metaMigratedAt":"2023-06-16T12:50:03.287Z","metaMigratedFrom":"Content","title":"何謂表達式(Expression)與陳述式(Statement)?","breaks":true,"contributors":"[{\"id\":\"663fae2d-2bb5-4437-90b7-96f11a50e120\",\"add\":1888,\"del\":292}]"}