iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0

表達式 (Expression)

A unit of code that results in a value.

表達式會形成一個值,而這個值它不一定被儲存在某變數中。
EX: 1+1 //2
運算子的運算,剛剛上面的範例是加號運算子回傳的2,也就是它執行完後就回傳這個結果。

再舉個例子,等號的運算子,因為它是會回傳右邊的值的函數,所以
a = 3 是表達式,因為它這個等號運算子回傳3。

簡單來說,表達式回傳一個值。

陳述式 (Statement)

當陳述式被執行時,並不會回傳值。
例如,「宣告」就是陳述式,它不會回傳值,但是會儲存在記憶體中,代表有這個東西。
EX: var a;

if Statment 是陳述式還是表達式?

if statement 不會回傳值,所以它是陳述式(所以才叫if statement 啊 XD)

var a = if(1===3){

};
VM1065:1 Uncaught SyntaxError: Unexpected token 'if'

像上面這樣會出錯!
但是if statement 裡面小括號放的是 會return true or false 的 expression(表達式)

函數的 陳述式與表達式

函數陳述式:

EX:

function hello(){//這是一個具名函數
console.log('Hello!');
}

創造這個叫hello的函式直接存在記憶體。
而程式一行一行執行到這裡並沒有回傳東西,甚麼事情都沒有做。
**而這個陳述式可以被hoisting
/**hoisting: 所有的宣告都會被提升到最頂端,而JavaScript是由上而下逐行執行,所以會有「先使用後宣告」的效果。
可以參考:Shubo 的程式教學筆記 [教學] JavaScript 中的 Hoisting 是什麼意思?let const var 的差異居然是這個?

函數表達式:

EX:

var hello = function(){//這是一個匿名函數,當然這個函數要有名稱也可以
console.log('hello');
}

你把一函式指派給宣告的一個變數叫hello,代表執行程式時創造並回傳了這個函數(這是一個物件)給 var hello。
事實上,函數表達式也是一級函數的一種表現,就是將一個匿名函數 (anonymous function / function literal) 當作值指定給一個變數。

卡斯伯's blog JavaScript 表達式觀念及運用 - JS Expression

bonnieli1414 【Day 21】JavaScript 函式
古德瑞 02. 陳述式與表達式


上一篇
JavaScript 函數 | 一級函數
下一篇
JavaScript Hoisting (提升)
系列文
開始入坑網頁吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言