--- tags: JAVASCRIPT --- 【js筆記】 解構賦值 === #### 原本方式 ```javascript= // #1 陣列解構 // 1. 請將 family 的值,一一賦予到變數上 // 2. 請將後面三個名字賦予到另一個陣列上 let family = ['小明', '杰倫', '阿姨', '老媽', '老爸']; let ming = family[0]; let jay = family[1]; let auntie = family[2]; ``` #### 解構賦值 ```javascript= let [ming, jay, , mom, dad] = family console.log(ming, jay, mom, dad) ``` ```javascript= let { ming: Goku, family: [, mom] } = { ming: '小明', family: ['阿姨', '老媽', '老爸'] } // 請問答案是什麼? console.log(Goku, mom); // 小明,老媽 ``` ## 應用 1. 交換變數 ```javascript= let Goku = '悟空'; let Ginyu = '基紐'; [Goku, Ginyu] = [Ginyu, Goku] console.log(Goku, Ginyu) ``` 2. 取出一個值,並賦在新的變數名稱上 ```javascript= let GinyuTeam = { Ginyu: '基紐', Jeice: '吉斯', burter: '巴特', // ... } let { Ginyu: abc } = GinyuTeam; let { Jeice } = GinyuTeam; console.log(abc, Jeice) ``` 3. 取出一個值,並賦在新的變數名稱上 ```javascript= let GinyuTeam = { Ginyu: '基紐', Jeice: '吉斯', burter: '巴特', // ... } let { Ginyu: abc } = GinyuTeam; let { Jeice } = GinyuTeam; console.log(abc, Jeice) ``` 3. 預設值 ```javascript= let [ming = '小明', jay = '杰倫'] = ['阿明'] console.log(ming, jay) // 阿明,杰倫 ``` ```javascript= let { family: ming = '小明' } = {} console.log(ming) ``` 4. 物件內容複製,且避免參考 (淺複製) ```javascript= // 將以下物件指向賦予到另一個物件上,並且避免參考 const GinyuTeam = { Ginyu: { name: '基紐' }, Jeice: { name: '吉斯' }, burter: { name: '巴特' }, // ... } const newTeam = { ...GinyuTeam } newTeam.ming = '小明' console.log(newTeam, GinyuTeam) ``` > 深複製寫法 ```javascript= const newTeam2 = JSON.parse(JSON.stringify(GinyuTeam)) ```