當 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
以上就是今天的內容,感謝觀看!!