目录
  • 前言
  • 1. 数组解构赋值:
    • 1.1 嵌套数组的解构赋值:
  • 2. 对象解构赋值:
    • 2.1 嵌套对象的解构赋值:
  • 3. 函数参数的解构赋值
    • 3.1 对象解构赋值作为函数参数:
    • 3.2 数组解构赋值作为函数参数:
  • 附:其他解构
    • 1. 字符串
    • 3. 其他数据类型
  • 总结

    前言

    ES6 中引入了解构赋值(Destructuring Assignment)的语法,它提供了一种方便的方式从数组或对象中提取值,并将它们赋给变量。

    1. 数组解构赋值:

    使用方括号[]来进行数组解构赋值。可以根据数组的结构,将其中的值赋给对应的变量。

    const numbers = [1, 2, 3, 4, 5];
    
    const [a, b, c, d, e] = numbers;
    
    console.log(a); // 输出 1
    console.log(b); // 输出 2
    console.log(c); // 输出 3
    console.log(d); // 输出 4
    console.log(e); // 输出 5
    

    除了基本的数组解构赋值外,还可以使用默认值来处理解构时可能不存在的元素。

    const numbers = [1, 2];
    
    const [a, b, c = 3] = numbers;
    
    console.log(a); // 输出 1
    console.log(b); // 输出 2
    console.log(c); // 输出 3
    

    1.1 嵌套数组的解构赋值:

    当处理嵌套的数组时,可以使用多个方括号[]来表示不同层级的解构赋值。

    const nestedArray = [1, [2, [3, 4]]];
    const [a, [b, [c, d]]] = nestedArray;
    
    console.log(a); // 输出 1
    console.log(b); // 输出 2
    console.log(c); // 输出 3
    console.log(d); // 输出 4

    2. 对象解构赋值:

    使用花括号{}来进行对象解构赋值。可以根据对象的属性,将对应的值赋给变量。

    const person = {
      name: 'Alice',
      age: 30,
      city: 'New York'
    };
    
    const { name, age, city } = person;
    
    console.log(name); // 输出 'Alice'
    console.log(age); // 输出 30
    console.log(city); // 输出 'New York'

      对象解构赋值也支持默认值的设置。

    const person = {
      name: 'Alice',
      age: 30
    };
    
    const { name, age, city = 'New York' } = person;
    
    console.log(name); // 输出 'Alice'
    console.log(age); // 输出 30
    console.log(city); // 输出 'New York'
    

    2.1 嵌套对象的解构赋值:

    当处理嵌套的对象时,可以使用多个花括号{}来表示不同层级的解构赋值。

    const nestedObject = {
      prop1: 'value1',
      prop2: {
        nestedProp1: 'value2',
        nestedProp2: {
          deeplyNestedProp: 'value3'
        }
      }
    };
    
    const { prop1, prop2: { nestedProp1, nestedProp2: { deeplyNestedProp } } } = nestedObject;
    
    console.log(prop1); // 输出 'value1'
    console.log(nestedProp1); // 输出 'value2'
    console.log(deeplyNestedProp); // 输出 'value3'

    3. 函数参数的解构赋值

    3.1 对象解构赋值作为函数参数:

    function printUserInfo({ name, age, city }) {
      console.log(`Name: ${name}`);
      console.log(`Age: ${age}`);
      console.log(`City: ${city}`);
    }
    
    const user = {
      name: 'Alice',
      age: 30,
      city: 'New York'
    };
    
    printUserInfo(user);
    

    在上面的例子中,我们定义了一个 printUserInfo 函数,它使用对象解构赋值作为函数参数。函数参数 { name, age, city } 指定了我们希望从传递的对象中提取的属性。当我们调用 printUserInfo 函数时,直接传递了一个对象参数 user,函数内部会根据解构赋值语法从对象中提取相应属性的值并打印出来。

    3.2 数组解构赋值作为函数参数:

    function sum([a, b, c]) {
      console.log(a + b + c);
    }
    
    const numbers = [1, 2, 3];
    
    sum(numbers);
    

    在上面的例子中,我们定义了一个 sum 函数,它使用数组解构赋值作为函数参数。函数参数 [a, b, c] 指定了我们希望从传递的数组中提取的元素。当我们调用 sum 函数时,直接传递了一个数组参数 numbers,函数内部会根据解构赋值语法从数组中提取相应元素的值并计算它们的和。

    附:其他解构

    1. 字符串

    • 字符串会被转换成了一个类似数组的对象。

    let [a, b, c] = 'ES6';
    console.log(a, b, c)	// E S 6
    

    • 字符串的length属性也能进行解构赋值

    let {length : l} = 'ES6';
    console.log(l) // 3
    

    3. 其他数据类型

    • 当等号左边为对象,右边为 数值、布尔值、undefined和null时

    let {a1: b1} = 666;
    console.log(b1);	// undefined
    let {a2: b2} = true;
    console.log(b2);	// undefined
    let {a3: b3} = undefined;
    console.log(b3);	// 报错
    let {a4: b4} = null;
    console.log(b4);	// 报错

    总结

    到此这篇关于ES6中解构赋值的语法及用法的文章就介绍到这了,更多相关ES6解构赋值内容请搜索本网站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本网站!

    您可能感兴趣的文章:

    • ES6数组与对象的解构赋值详解
    • ES6 解构赋值的原理及运用
    • ES6解构赋值实例详解
    • ES6 对象的新功能与解构赋值介绍
    • 详解JS ES6变量的解构赋值
    • ES6解构赋值的功能与用途实例分析
    • ES6学习之变量的解构赋值
    • ES6的解构赋值实例详解