iT邦幫忙

2021 iThome 鐵人賽

DAY 10
1
自我挑戰組

JavaScript 核心觀念系列 第 10

【Day10】ASI 自動插入分號

  • 分享至 

  • xImage
  •  

ASI(Automatic Semicolon Insertion)

當 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 的規則

如果新的一行開頭

([/+-*%,.

不會發生 ASI 的規則

範例:

let a = 1
let b = a
+ a

console.log(b)  // 2

以上就是今天的內容,感謝觀看!!


上一篇
【Day09】陳述式與表達式
下一篇
【Day11】動態型別
系列文
JavaScript 核心觀念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言