# ASI 補充說明
###### tags: `youtube新手`
### “不會” 發生 ASI 的規則:
1. 新的一行是 `(`、`[`、`/` 開始 (容易出錯的地方)
```
var a = 1
var b = a
(a + b).toString()
(function() { })()
(function() { })()
var a = 1
var b = a
/test/.test(b)
```
2. 新的一行以 `+`、`-`、`*`、`%` 作開始 (會影響執行結果)
```
var a = 2
var b = a
+a
```
3. 新的一行以 `,`、`.` 作開始 (需注意執行結果)
```
var a = 2
var b = a
.toString()
console.log(typeof b)
var a = 1
,b = 2 // b 一樣會 var 被宣告
```
因此,遇到以上的標點符號前方加入分號也是解決辦法
ex:
```
// 執行錯誤
(function() { })()
(function() { })()
// 正確
;(function() { })()
;(function() { })()
```