A unit of code that results in a value.
表達式會形成一個值,而這個值它不一定被儲存在某變數中。
EX: 1+1 //2
運算子的運算,剛剛上面的範例是加號運算子回傳的2,也就是它執行完後就回傳這個結果。
再舉個例子,等號的運算子,因為它是會回傳右邊的值的函數,所以a = 3
是表達式,因為它這個等號運算子回傳3。
當陳述式被執行時,並不會回傳值。
例如,「宣告」就是陳述式,它不會回傳值,但是會儲存在記憶體中,代表有這個東西。
EX: var a;
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. 陳述式與表達式