Appearance
1. JavaScript 常見縮寫
打開檔案 /es6/shorthand.html
1. 語法糖與新增語法
語法糖
:不會影響運作,邏輯與當前 JS 一致tsconst obj = { myName: '物件', fn: function() { return this.myName; } }
新增語法:會影響運作
- 若將
fn
改成箭頭函式
,是會出錯的,this
會指向到 全域。tsvar myName = '全域'; const obj2 = { myName: '物件', fn: () => { return this.myName; } }
- 若將
2. 物件字面值 Object literals
1. 物件內的函式
tsconst obj3 = { myName: '物件', fn() { // 縮寫 return this.myName; } }
2. 物件內的變數
tsconst name = '小明'; function fn() { return this.name; } const person = { name, fn, };
3. 展開
1. 不同陣列合併
tsconst groupA = ['小明', '杰倫', '阿姨']; const groupB = ['老媽', '老爸']; const groupC = [...groupA, ...groupB]
2. 物件擴展
tsconst methods = { fn1() { console.log(1); }, fn2() { console.log(1); }, } const newMethods = { ...methods, fn3() { console.log(3); } }
3. 轉成純陣列
- 補充說明:
NodeList
或HTMLCollection
或Arguments
是「類陣列
」的物件,可以運用本章節的展開技巧轉換為純陣列。 - Argument
- HTMLCollection
- NodeList
tsconst doms = document.querySelectorAll('li'); const list = [1, 2, 3] doms.map(e => console.log(e)); // 類陣列沒有 map 方法 list.map(e => console.log(e)); // 可正常運行 const newDoms = [...doms]; newDoms.map(e => console.log(e)); // 可正常運行
- 補充說明:
4. 參數預設值
ts
function sum(a, b = 1) { // 預設值避免錯誤
return a + b;
}
console.log(sum(1));