---
# System prepended metadata

title: 上課共筆文件 - 第一週
tags: [Vue 直播班 - 2021 夏季班]

---

---
tags: Vue 直播班 - 2021 夏季班
---

# 上課共筆文件 - 第一週

## 語法糖與新增語法
### 新增語法：
* 箭頭函式(特性:自帶retrun)
* let 、const
#### 箭頭函式
```javascript=
=> { return 結果 }
=> 回傳一個結果
=> ({ 回傳物件 })
```

### 語法糖：
不會影響運作，邏輯與當前一致。
* 物件字面值
* 展開運算子：淺拷貝

### 物件字面值：
物件中的函式縮寫
```
//本來的寫法
const obj = {
    fn: function(){
        console.log('ok');
    }
}

//縮寫寫法
const obj = {
    fn(){
        console.log('ok');
    }
}
```
物件 key 和值相同時可縮寫
```
//本來的寫法
const myName = "小明";
const person = {
    myName: myName
}

//縮寫寫法
const myName = "小明";
const person = {
    myName
}
```

### 展開：
陣列合併：
```
const groupA = ['A','B','C'];
const groupB = ['D','E'];
const groupAll = [...groupA,...groupB]; //groupA groupB 都被合併至 groupAll 了
```
把其他物件的方法合併過來：
```
const methods = {
    fn(){
        console.log('methods fn')
    }
}
const methods2 = {
    ...methods,
    fn2(){
        console.log('methods fn2')
    }
}
methods2.fn(); //可印出 methods fn
```

### 解構：
const { 變數名稱 } = 物件名稱;
如果在解構式裡放函式，不能加上括號。
```
const {method()} = people; //錯誤
const {method} = people; //正確

```

### 樣板字面值：
可使用變數、運算結果、加入判斷式
**等號右邊的就可以大膽放入!**
```
const text = `${變數名稱}去吃飯`;
```

運算結果
```
function sum(a,b){
    return a+b;
}
const text = `${sum(1,2)}`;
```

加入判斷式(三元運算子)，三元運算子寫法為：「判斷式 ? 如果是 true 要做什麼 : 如果是 false 要做什麼」
sum(1,2)>7 ? '超過7':'低於7'
```
function sum(a,b){
    return a+b;
}
const text = `${sum(1,2)}${sum(1,2)>7 ? '超過7':'低於7'}`;
```
 
### 陣列處理方法：
除了forEach，其他迴圈手法都會產生空陣列
map的長度會跟原始陣列一模一樣

使用 map 方法回傳物件格式，並使用箭頭函式的縮寫時，要用小括號括起來
```
const map = people.map(item=>
    ({
        text: `${item.name}`
    })
);
```

filter 回傳符合條件的陣列
```
const filter = people.filter(item=>item.price>90)
```

* [JavaScript 陣列處理方法 [filter(), find(), forEach(), map(), every(), some(), reduce()]
](https://wcc723.github.io/javascript/2017/06/29/es6-native-array/)

## 第四周大魔王：
API(第二周釋出)
Component
Props,Emits
ESM(第一周釋出)
可能加碼協助:線上助教、加碼活動

## 關注點分離：
是一個設計模式

**關鍵點:先定義資料**

關注點分離，常見的分離點
* 資料HTML, JS 分離
* 資料與方法分離

## ESmodule (ESM)
JS模組化分裝(依據功能)
可將外部JS引入近來

與傳統載入差別:
能管理、知道載入內容(不全部載入)
差別在封裝，不會汙染到全域
> [![](https://i.imgur.com/dYWG6qk.png)
]

