當 JavaScript 語句沒有加上分號時,則會受到自動插入分號(ASI)規則影響,
因此有時不加分號程式碼也不會出錯,但結果不一定是自己想要的
範例:
function callName(){
return
'weiwei';
}
console.log(callName());
// 被 ASI 轉換成
function callName(){
return;
'weiwei';
}
console.log(callName());
此時會回傳 undefined 而不是 'weiwei'
因為受到自動插入分號(ASI)的影響,
會在 return 後方加上分號,
加上分號後 return 也就沒有回傳內容,
因此才會回傳 undefined
如果顯示 'weiwei' 的話就必須改成
function callName(){
return 'weiwei';
}
console.log(callName());
再來看另一個範例
if (1 > 2) a = 1
else a = 2
console.log(a)
此時會回傳 2,
而該範例會被 ASI 轉換
if (1 > 2) a = 1;
else a = 2;
console.log(a);
// 加入分號後可寫在同一行
if (1 > 2) a = 1; else a = 2; console.log(a);
如果新的一行開頭為
(、[、/、+、-、*、%、,、.
則不會發生 ASI 的規則
範例:
let a = 1
let b = a
+ a
console.log(b) // 2
以上就是今天的內容,感謝觀看!!