###### tags: ` JavaScript` # ES6 JS 常見縮寫 本篇筆記是參考六角學院的教學影片作紀錄。 [六角學院 - JS 常見縮寫](https://courses.hexschool.com/courses/vue-20211/lectures/30451586) ## 語法糖與新增語法 :::info 語法糖不會影響 JS 運作,邏輯是跟一般當前 JS 一樣 但是 新增語法會影響 (ex 箭頭函式) ::: ### 一般寫法 ```javascript= const obj = { myname: "我是物件", fn: function(){ return this.myname; } } console.log(obj.fn()); // 我是物件 ``` ### 語法糖 ( ES6 縮寫形式) ```javascript= const obj = { myname: "我是物件", fn(){ return this.myname; } } console.log(obj.fn()); // 我是物件 ``` ### 新增語法 ( ES6 箭頭函式 ) ```javascript= const obj = { myname: "我是物件", fn: () => { return this.myname; } } console.log(obj.fn()); // undefined ``` 因為箭頭函式的關係,會造成 this 的指向不同 --- ## 物件內的變數 :::info 物件內變數可以省去同名的部份 ::: ### 一般寫法 ```javascript= const person = { name: "Tom" } const people = { person: person } ``` ### 語法糖 ```javascript= const person = { name: "Tom" } const people = { person } ``` --- ## 展開 ### 1.陣列的合併 ### 一般寫法 ```javascript= const a = [1,2,3]; const b = [4,5]; const all = a.concat(b); ``` ### 語法糖 ```javascript= const a = [1,2,3]; const b = [4,5]; const all = [...a,...b]; ``` ### 2.物件的擴展 ```javascript= const methods = { fn1(){ }, fn2(){ } } const newMethods = { fn3(){ }, ...methods } ``` 這麼一來,新的物件 newMethods 除了有自己的 function ,還包含了 methods 中的 fn1(), fn2() ### 3.轉成純陣列 ```javascript= const doms = document.querySelectorAll('li'); // __proto__ 的可用方法少了很多一般純陣列可使用的方法 const newdoms = [...doms]; // __proto__ 就有正常純陣列可使用的方法 ``` --- ## 預設值 ### 一般寫法 ```javascript= function sum(a,b){ if (!b) { b = 2 }; return a + b ; } ``` ### 語法糖 ```javascript= function sum(a = 2,b = 3){ return a + b ; } ``` 可以在宣告函式時直接幫參數設定預設值,可以都給預設值,或是只有某個參數給預設值