JavaScript 語句類型,用於命令執行指定一系列操作,最大的特徵是不會回傳結果,
因為陳述式不會回傳結果,因此陳述式不能賦值到變數上
範例:
回傳結果可以藉由 Chrome 瀏覽器開發人員工具的 Console 來查看
{var a}
var a
if (1 === 1) {}
上述結果只會顯示 undefined
,而不會回傳結果,因此視為陳述式
如果將陳述式賦值到變數上會產生錯誤
var a = if (1 === 1) {}
上方範例會顯示 SyntaxError: Unexpected token 'if'
代表陳述式無法賦值到變數中
其他陳述式內容詳 MDN 參考文件
又稱為表示式、運算式,經常透過一些符號結合上下語句並運算及回傳結果
範例:
回傳結果可以藉由 Chrome 瀏覽器開發人員工具的 Console 來查看
1 + 1
name = 'weiwei'
1 === 1
{name: 'weiwei'}
上述範例都會回傳對應的結果,因此會被視為表達式
其他表達式內容詳 MDN 參考文件
函式陳述式中函式一定要賦予名稱,而有名稱的函式稱為具名函式,
函式表達式中函式可以沒有名稱,而沒名稱的函式稱為匿名函式,
兩者的差異在於提升(Hoisting)的效果不同
範例:
// 函式陳述式、具名函式
function a() {}
a();
// 拆解
// 創造階段
function a() {}
// 執行
a();
// 函式表達式、匿名函式
var a = function() {}
a();
// 拆解
// 創造階段
var a;
// 執行
a = function() {}
a();
{}
在 JavaScript 中稱為 block,block 也是陳述式的一種,
但它也有物件實字的用法,在當成物件實字使用時,可以賦值到變數中。
// block
{
var a = 'weiwei'
}
錯誤範例:
{
const a = 'weiwei'
}
console.log(a);
此時會顯示 ReferenceError: a is not defined
,
因為 block 內使用 es6 定義變數時,作用域只在 {}
中
// 物件實字,此為定義物件的一種方式
{
a: 'weiwei'
}
var b = {
a: 'weiwei'
}
以上為陳述式與表達式內容,感謝觀看。