1. 程式人生 > >ES6的 結構賦值----簡單demo

ES6的 結構賦值----簡單demo

<script type="text/javascript">

// 解構賦值
{
    let [a,b,c] = [1,2,3];
    console.log(a,b,c); //1 2 3
}

//巢狀
{
    let [a,[b,c,[d,e,f]]] = [1,[2,3,[4,5,6]]];
    console.log(a,b,c,d,e,f); //1 2 3 4 5 6 
}

// ... (三點運算子) 
// 剩餘運算子,聲譽的部分放在陣列中賦值
{
    let [a,...b] = [1,2,3,4,5];
    // console.log(a,b[3]);
    let [c,d,e,f] = b;
    console.log(a+"|"+b+"|"+c,d,e,f); //1 | 2,3,4,5 | 2 3 4 5
    // console.log(a);
    // console.log(b);
    // console.log(c,d,e,f);
}
// 展開運算子,
{
    let a = [1,2,3,4,5];
    let b = [0,...a]
    console.log(b); // (6) [0, 1, 2, 3, 4, 5]
}

// 結構不成功
{
    let [a,b,c] = [1,2];
    console.log(a,b,c);//c = undefined(不會報錯)
}

//不完全解構
{
    let [a,b,c] = [1,2,3,4,5];
    console.log(a,b,c);// 1 2 3    4,5 還有沒有解構
}

//允許預設值
//必須 ===undefined 時才會使用預設值,用 ‘=’設定預設值,預設值可以使用變數,但是變數必須是被宣告過的==>注意解構的執行順序。
{
    let [a=1,b=a,c] = [,,3];
    console.log(a,b,c); // 1 1 3
}

//物件(鍵值對)的解構
//與陣列的用法一樣
{
    let user = {
        name:"栓單",
        age:"21"
    }    
    // name 屬性,a 變數 ,age 屬性  b 變數
    // 等同於 {
    //             let {name,age} = {name:"栓單",age:"21"}     //簡寫:屬性名和變數名相同;
    //          }
    let {name:a,age:b} = user;  //正常寫法 屬性:變數;
    console.log(a,b); //栓單 21
}

// 物件的 巢狀

{
    let {a,b,c} = {
        a:"1",
        b:{aa:"aa"},
        c:"3"
    };
    console.log(a, b.aa ,c); //1 aa 3
}

// 變數的交換
// Es5的寫法:
// {
//         var a = 1; var b = 2;
//         console.log(a,b) // 1 2
//         //變數交換 -- 需要再宣告一個空的媒介
//         var c = null;
//         //進行交換
//         c = a ; a = b ; b = c ;
//         console.log(a,b) // 2 1
//         //很神奇吧!就是程式碼有點多,在Es6裡三行就搞定。 
// }
// Es6的寫法:
{
    let a = 1;
    let b = 2;
    let c = 3;
    console.log(a,b,c); //1 2
    //a,b進行交換
    [a,b,c] = [c,b,a];
    console.log(a,b,c); //2 1
}

// 函式的返回值
{
    function fn(){
        return {
            name:"栓單",
            age:"21",
            timer:"2018",
        }
    }
    // 第一種寫法==>直接賦值個給物件
    let {name,age,timer} = fn();
    console.log(name,age,timer); //栓單 21 2018
    // 第二種寫法==>賦值給變數,在呼叫變數(物件.鍵  得出 值)
    user = fn();
    console.log(user.name,user.age,user.timer);//栓單 21 2018
}

// json 資料的解構
{
    // 模擬資料
    let obj = {
        title:"標題",
        info:"扒拉扒拉扒拉",
        spans:[
            {
                s_title:"標籤1",
                s_info:"標籤1-巴拉巴"
            },
            {
                s_title:"標籤2",
                s_info:"標籤2-巴拉巴"
            }
        ],
    }
    //結構資料
    let {title,info,spans} = obj;
    console.log(title,info,spans);//標題 扒拉扒拉扒拉 (2) [{…}, {…}]

    console.log(spans[0]); // let.html:146 {s_title: "標籤1", s_info: "標籤1-巴拉巴"}
    console.log(spans[1]); // let.html:147 {s_title: "標籤2", s_info: "標籤2-巴拉巴"}

    let [a,b] = spans;
    console.log(a);// let.html:150 {s_title: "標籤1", s_info: "標籤1-巴拉巴"}
    console.log(b);// let.html:151 {s_title: "標籤2", s_info: "標籤2-巴拉巴"}
}
</script>

<script type="text/javascript">


// 解構賦值
{
    let [a,b,c] = [1,2,3];
    console.log(a,b,c); //1 2 3
}

//巢狀
{
    let [a,[b,c,[d,e,f]]] = [1,[2,3,[4,5,6]]];
    console.log(a,b,c,d,e,f); //1 2 3 4 5 6 
}

// ... (三點運算子) 
// 剩餘運算子,聲譽的部分放在陣列中賦值
{
    let [a,...b] = [1,2,3,4,5];
    // console.log(a,b[3]);
    let [c,d,e,f] = b;
    console.log(a+"|"+b+"|"+c,d,e,f); //1 | 2,3,4,5 | 2 3 4 5
    // console.log(a);
    // console.log(b);
    // console.log(c,d,e,f);
}
// 展開運算子,
{
    let a = [1,2,3,4,5];
    let b = [0,...a]
    console.log(b); // (6) [0, 1, 2, 3, 4, 5]
}

// 結構不成功
{
    let [a,b,c] = [1,2];
    console.log(a,b,c);//c = undefined(不會報錯)
}

//不完全解構
{
    let [a,b,c] = [1,2,3,4,5];
    console.log(a,b,c);// 1 2 3    4,5 還有沒有解構
}

//允許預設值
//必須 ===undefined 時才會使用預設值,用 ‘=’設定預設值,預設值可以使用變數,但是變數必須是被宣告過的==>注意解構的執行順序。
{
    let [a=1,b=a,c] = [,,3];
    console.log(a,b,c); // 1 1 3
}

//物件(鍵值對)的解構
//與陣列的用法一樣
{
    let user = {
        name:"栓單",
        age:"21"
    }    
    // name 屬性,a 變數 ,age 屬性 b 變數
    // 等同於 {
    //             let {name,age} = {name:"栓單",age:"21"}     //簡寫:屬性名和變數名相同;
    //          }
    let {name:a,age:b} = user;  //正常寫法 屬性:變數;
    console.log(a,b); //栓單 21
}

// 物件的 巢狀
{
    let {a,b,c} = {
        a:"1",
        b:{aa:"aa"},
        c:"3"
    };
    console.log(a, b.aa ,c); //1 aa 3
}

// 變數的交換
// Es5的寫法:
// {
//         var a = 1; var b = 2;
//         console.log(a,b) // 1 2
//         //變數交換 -- 需要再宣告一個空的媒介
//         var c = null;
//         //進行交換
//         c = a ; a = b ; b = c ;
//         console.log(a,b) // 2 1
//         //很神奇吧!就是程式碼有點多,在Es6裡三行就搞定。 
// }
// Es6的寫法:
{
    let a = 1;
    let b = 2;
    let c = 3;
    console.log(a,b,c); //1 2
    //a,b進行交換
    [a,b,c] = [c,b,a];
    console.log(a,b,c); //2 1
}

// 函式的返回值
{
    function fn(){
        return {
            name:"栓單",
            age:"21",
            timer:"2018",
        }
    }
    // 第一種寫法==>直接賦值個給物件
    let {name,age,timer} = fn();
    console.log(name,age,timer); //栓單 21 2018
    // 第二種寫法==>賦值給變數,在呼叫變數(物件.鍵  得出 值)
    user = fn();
    console.log(user.name,user.age,user.timer);//栓單 21 2018
}

// json 資料的解構
{
    // 模擬資料
    let obj = {
        title:"標題",
        info:"扒拉扒拉扒拉",
        spans:[
            {
                s_title:"標籤1",
                s_info:"標籤1-巴拉巴"
            },
            {
                s_title:"標籤2",
                s_info:"標籤2-巴拉巴"
            }
        ],
    }
    //結構資料
    let {title,info,spans} = obj;
    console.log(title,info,spans);//標題 扒拉扒拉扒拉 (2) [{…}, {…}]

    console.log(spans[0]); // let.html:146 {s_title: "標籤1", s_info: "標籤1-巴拉巴"}
    console.log(spans[1]); // let.html:147 {s_title: "標籤2", s_info: "標籤2-巴拉巴"}

    let [a,b] = spans;
    console.log(a);// let.html:150 {s_title: "標籤1", s_info: "標籤1-巴拉巴"}
    console.log(b);// let.html:151 {s_title: "標籤2", s_info: "標籤2-巴拉巴"}
}
</script>

 

瞭解更多;

原創地址:https://blog.csdn.net/china_dou  

轉載請註明出處~