---
# System prepended metadata

title: JavaScript 核心篇 課程補充資源
tags: [youtube新手]

---

# 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);
```