# JavaScript 核心篇 課程補充資源 ###### tags: `youtube新手` ## ASI 補充說明 ### “不會” 發生 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() { })() ``` ## 預設值為 0 的解決方案 預設值為 0 的解決方法 使用三元運算子 ``` var originCash = 500; function updateEasyCard(cash) { cash = parseInt(cash); console.log(cash); // 當 cash 是數值或為 0 時,使用 cash 的數值 // 如果 cash 是 NaN 時,則直接套用 500 cash = (cash || cash === 0)? cash: 500; var money = cash + originCash; console.log('我有 ' + money + ' 元'); } updateEasyCard(0); ```