ES 6デフォーメーション、エクステンション演算子/拡張演算子

4985 ワード

割り当て値
 ES 6は、一定のパターンに従って配列とオブジェクトから値を抽出することができ、変数に値を割り当てることができます.
1.構成解除値:基本的な使い方、構成を改めて名前をつけ、デフォルトを解く
    :   ,  ,           ,        
    let json = ["  ", 20, " "]    
    let [name,age,sex] = json;
    console.log(name,age,sex);      //     20  
       //  :              ,      ,     , :let ["name","age","sex"] = ["  ", 20, " "];         。
       //          :
    name="  "             //   "  "   "  " 

----------------------------------------------------
     :        key ,     
    let json = {
        name:"  ",
        age:20,
        sex:" "
    }
    let { name,age:a,sex:b } = json;
    console.log(name,a,b);      //     20  

----------------------------------------------------
     :               
    let json = ["  ", 20, " "]    
    let [name,age,sex,love="  "] = json;
    console.log(name,age,sex,love);      //     20     

  :           :           ,        null  ,            ,   null 。
         undefiend ,           。  :

    let [name,age,sex,love="  "] = ["  ", 20, " ",undefiend];
    console.log(name,age,sex,love);      //     20     

    let [name,age,sex,love="  "] = ["  ", 20, " ",null];
    console.log(name,age,sex,love);      //     20   null
  二つの数を交換する位置
let a = 10;
let b = 20;
[a,b] = [b,a]
console.log(a,b)  // 20 10
 2.オブジェクトの割り当て値:
    //    :
    let {name,age,sex} = {name:"  ", age:"20", sex:" "} ;
    console.log(name);      //    
    console.log(age);       //  20
    console.log(sex);       //    

    //    :
    let {name,age, sex, friend} = {name:"  ", age:"20", sex:" ", friend:["  ", "  "]} ;
    console.log(name);      //    
    console.log(age);       //  20
    console.log(sex);       //    
    console.log(friend);    //  ["  ", "  "]

    //    :
    let {name,age, sex, friend, pet} = {name:"  ", age:"20", sex:" ", friend:["  ", "  "], pet:{name:"  " ,age:"2"}} ;
    console.log(name);      //    
    console.log(age);       //  20
    console.log(sex);       //    
    console.log(friend);    //  ["  ", "  "]
    console.log(pet);       //  {name:"  " ,age:"2"}
  //  :       ,key        ,    key          ,     undefined, 。
    let {name:str} = {name:"  "};
    console.log(name);      //        
    console.log(str);       //    
    //  ,           ,     key     ;
オブジェクトについては、まず変数を定義してから、値を分解します. :もし{}前に変数宣言子がないなら、ブラウザは直接「}ブロックレベルのスコープと見なして、文法エラーを報告します.
      ,     ,     ,       
let a;
{ a } = { a:"123", b:12}
----------------------------------------------------------
             ,          , ()   
let a;
({ a } = { a:"123", b:12})
3.配列ネスト解除賦課値:  
    let [arr1, [arr2, arr3, [arr4, arr5]]] = [1, [2, 3, [4, 5]]];
    concole.log(arr1,arr2,arr3,arr4,arr5)   //  1, 2, 3, 4, 5
  //  :               ,                  

  //            undefiend
    let [arr] = [];
    console.log(arr)         // undefiend 

    let [a, b, c] = [1, 2, 3];
    console.log(a)          // 1
    console.log(b)          // 2
    console.log(c)          // 3

  //                       :
    let [a, , , c] = [1, 2, 3];
    console.log(a)          // 1
    console.log(c)          // undefined
4.基本タイプの分解賦課値:(開発中は気絶が少ない.了解すればいい) 
  //String       ,    。
    let [a, b, c, d, e] = "     ";
    console.log(a)          //  
    console.log(b)          //  
    console.log(c)          //  
    console.log(d)          //  
    console.log(e)          //  
  //Number         ,    。
    let [a, b, c, d, e] = 12306;
    console.log(a)          //     
    console.log(b)          //     
    console.log(c)          //     
    console.log(d)          //     
    console.log(e)          //     
拡張演算子
文法は三つの点です.  
     :     
let arr = ["red","blue",green]
console.log(...arr)  // red blue green

-------------------------------------------------------
     :     ,       
function show(...a){
    console.log(arguments) //       [1,2,3,4,5,6]
    console.log(a)  // [1,2,3,4,5,6]
}
show(1,2,3,4,5,6)

-------------------------------------------------------
       :             
function show(a,b,...c){
    console.log(a)  // 1
    console.log(b)  // 2
    console.log(c)  // [3,4,5,6]
}
show(1,2,3,4,5,6)
  :              ,         
function show(a,...b,c){
    //         
}
show(1,2,3,4,5,6)
コピー配列、オブジェクト:浅いコピー
let arr = [1,2,3,4];
//let arr2 = Array.from(arr) //      
let arr2 = [...arr]
console.log(arr2)  // [1,2,3,4]


let arr = {name:"a",age:12};
let arr2 = {...arr}
console.log(arr2)  // {name:"a",age:12}