es6——解构

2019-07-17  本文已影响0人  汀上

解构赋值是对赋值运算符的扩展,以下demo:

<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
    <meta charset="utf-8">
    <title></title>
</head>

<body>

</body>
<script type="text/javascript">
    <!-- 对数组进行一系列操作 -->
    var [a, b, c] = [1, 2, 3];
    console.log('基本结构', a, b, c); //1 2 3

    var [a, [[b], c]] = [2, [[3], 4]];
    console.log('嵌套结构', a, b, c) // 2 3 4

    var [a, , c] = [3, 4, 5];
    console.log('忽略解构', a, c) //3 5

    var [a = 1, b] = []
    console.log('不完全解构', a, b) // 1 undefined

    var [a, ...b] = [1, 3, 3, 4, 5];
    console.log('...(剩余运算符)', a, b) //1 [3,3,4,5]

    <!-- 对字符串进行操作 -->
    var [a, b, c, d, e] = 'hello'
    console.log('字符串', a, b, c, d, e) //'h' 'e' 'l' 'l' 'o'
    var [a, b, c, d, e] = 'helloword'
    console.log('字符串', a, b, c, d, e) //'h' 'e' 'l' 'l' 'o'
    var [a, b, c, d, e] = 'hel'
    console.log('字符串', a, b, c, d, e) //'h' 'e' 'l' 'undefined' 'undefined'

    <!-- 解构默认值 -->
    var [a = 2] = [undefined] //a = 2,有匹配结果,结果是undefined,触发默认值
    var [a = 3, b = a] = [] //a = 3 , b = 3
    var [a = 3, b = a] = [1] //a = 1,b=1
    var [a = 3, b = a] = [1, 2] //a = 1,b =1

    <!-- 解构对象 -->
    var {foo , bar } = {foo:'aaa',bar:'bbb'}; //foo = aaa,bar = bbb
    var {baz = foo} = {baz : 'ddd'}// baz = ddd

    var obj = {p:['hello',{y:'world'}]}

    var {p:[x,{y}]} = obj //x = 'hello' y = 'world'
    var {p :[x,{}]} = obj  //x = 'hello'
    var {p:[x,{y},z]} = obj //x = 'hello',y = 'world',z = undefined
    var {a,b,...c} = {a:1,b:2,c:3,d:4,e:5,f:6,g:7}//a = 1,b = 2,c = {c:3,d:4,e:5,f:6,g:7}
    var {a = 10,b = 5} = {a:3}; //a = 3
    var {a = 10, b = 5} = {a: 3};// a = 3; b = 5;
    var {a: aa = 10, b: bb = 5} = {a: 3};// aa = 3; bb = 5;

    // 主要应用 遍历map
    var map = new Map() ;
    map.set('first','hello');
    map.set('second','world');
    console.log(map)
    for(let [key] of map){
      console.log(key)
    }
    for(let [,value] of map){
      console.log(value)
    }
</script>

</html>

上一篇 下一篇

猜你喜欢

热点阅读