--- tags: Javascript --- # JS ASI自動插入分號 ASI 全名為 「Automatic Semicolon Insertion」,中文名稱為「自動分號插入」。 以下例子為例,如在結尾沒加上分號會自行插入 ```javascript= function hi () { return 'Hi' } console.log(hi()); // undefined ``` 導致程式碼變成以下 ```javascript= function hi () { return; 'Hi'; } console.log(hi()); // undefined ``` 還有常見犯錯例子,也就是立即函式 ```javascript= (function() { console.log('hello') })() (function() { console.log('world') })() ``` 如下圖  解決方法如下,結尾或開頭加上分號 ```javascript= // plan A ;(function() { console.log('hello') })() ;(function() { console.log('world') })() // plan B (function() { console.log('hello') })(); (function() { console.log('world') })(); ``` **不會**發生 ASI 的規則如下,可在頭或尾加上';'解決: 1. 新的一行是 `(`、`[`、`/` 開始 (容易出錯的地方) 2. 新的一行以 `+`、`-`、`*`、`%` 作開始 (會影響執行結果) 3. 新的一行以 `,`、`.` 作開始 (需注意執行結果) 一開始會想說誰不會在結尾加上分號,根本自找麻煩,結果[ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)的其中一個風格 **Standard** 就是提倡不在結尾處加上分號
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up