zoukankan      html  css  js  c++  java
  • es6-2 解构赋值

    ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

    数组解构赋值

    {
        let a, b, rest
        [a, b] = [1, 2]
        console.log(a, b) // 1 2
    }

    结构赋值展开符特性

    {
        let a, b, rest
        [a, b, ...rest] = [1, 2, 3, 4, 5, 6]
        console.log(a, b, rest) // 1 2 [3, 4, 5, 6]
    }

    结构赋值可以设置默认值, 并且如果左右匹配数量不对, 未匹配到的变量值为 undefined

    {
        let a, b, rest
        [a, b, rest = 3] = [1, 2]
        console.log(a, b, rest) // 1 2 3
    }
    {
        let a, b, rest
        [a, b, rest] = [1, 2]
        console.log(a, b, rest) // 1 2 undefined
    }

    解构赋值使用场景--变量值交换

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

    函数多个返回值的接收

    {
        function test() {
            return [1, 2]
        }
        let a, b
        [a, b] = test()
        console.log(a, b) // 1 2
    }

    选择性接收值

    {
        function test() {
            return [1, 2, 3, 4]
        }
        let a, b
        [a, , b] = test()
        console.log(a, b) // 1 3
    }

    不知道返回值返回几个, 只要第一个, 剩余的可以接收数组形式

    {
        function test() {
            return [1, 2, 3, 4]
        }
        let a, b
        [a, ...b] = test()
        console.log(a, b) // 1 [2, 3, 4]
    }

    对象解构赋值

    {
        let a, b
        ({a, b} = {a: 1, b: 2})
        console.log(a, b) // 1 2
    }

    对象结构赋值默认值

    {
        let {a = 10, b = 5} = {a: 3}
        console.log(a, b) // 3 5
    }

    使用场景, 服务端返回数据

    {
        let metaDate = {
            title: 'title',
            test: [
                {
                    title: 'test',
                    desc: 'description'
                }
            ]
        }
        let {title: esTitle, test: [{title: cnTitle}]} = metaDate
        console.log(esTitle, cnTitle) // title test
    }

    上边的代码是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。

    使用场景, 对象的解构赋值,可以很方便地将现有对象的方法,赋值到某个变量。

    let { log, sin, cos } = Math;

    上面代码将Math对象的对数、正弦、余弦三个方法,赋值到对应的变量上,使用起来就会方便很多。

    字符串解构赋值

    {
        let a, b, c, d
        [a, b, c, d] = '中华曲库'
        console.log(a, b, c, d) // 中 华 曲 库
    
        let {length : len} = 'hello';
        console.log(len) // 5
    }

    变量解构赋值的用途:

    1. 交换变量的值。[x,y]=[y,x];
    2. 从函数返回多个值。函数只能返回一个值,如果要返回多个值,只能将它们放在数组或对象里返回。有了解构赋值,取出这些值就非常方便。
    3. 函数参数的定义。解构赋值可以方便地将一组参数与变量名对应起来。
    4. 提取JSON数据
    5. 函数参数的默认值
    6. 遍历Map结构
    7. 输入模块的指定方法
  • 相关阅读:
    php目录递归删除
    php嵌套数据
    HTML 标签
    枚举 递归
    传值传址 结构体
    去超市选择要购买的商品 将数组放入集合
    函数
    集合 ArrayList 类
    特殊集合 Stack Queue Hashtable
    二维数组,多维数组
  • 原文地址:https://www.cnblogs.com/helzeo/p/11811452.html
Copyright © 2011-2022 走看看