兩者最大的不同就是在於 陳述式 並不會 回傳一個結果,而是執行特定的程式碼,例如使用 if/else、switch、try/catch,變數宣告 var、let、contst。
而表達式會進行運算之後,回傳一個結果。
其中比較需要注意的就是,表達式只要是能夠取到值的程式碼,就可以稱做表達式。
// statement 陳述式
var a = 123;
// expression 表達式
console.log(a);
兩者的差別之前的章節有提到過,就是hoisting的順序,在創造階段跟執行階段賦值的差別。
// 函式陳述式
function fn () {
...
}
// 函式表達式
var a = function () {
...
}
{
var ming = '小明';
}
上述這樣的結構,稱作為Block,而在Block中,可以執行其他的陳述式或是表達式。
並且,使用ES6的變數宣告方式,let/const就只能在Block的範圍中被取用。
還有經常看到的結構,就是 物件實字
{
ming: '小明'
}
而這樣的結構可以利用變數賦值,相反的Block的結構則不行。
// X
var a = {
var b = '小明';
}
// O
var a = {
ming: '小明'
}
以上就是今天的分享~汪汪