ES6新特性:变量的解构赋值

文章目录

  • [1 数组的解构赋值](#1 数组的解构赋值)
    • [1.1 基本用法](#1.1 基本用法)
    • [1.2 交换变量的值](#1.2 交换变量的值)
    • [1.3 注意事项](#1.3 注意事项)
  • [2 对象的解构赋值](#2 对象的解构赋值)
    • [2.1 基本用法](#2.1 基本用法)
    • [2.2 属性重命名](#2.2 属性重命名)
    • [2.3 注意事项](#2.3 注意事项)

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

ES6的变量解构赋值是指通过解构的方式将数组或对象中的值赋值给变量。

1 数组的解构赋值

1.1 基本用法

数组的解构赋值可以通过以下语法实现:

javascript 复制代码
let arr = [1, 2, 3];
let [a, b, c] = arr;
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3

在上述语法中,我们将数组 arr 中的值通过方括号的方式进行解构,并将值分别赋值给变量 a, b 和 c。

1.2 交换变量的值

javascript 复制代码
let a = 1;
let b = 2;
[a, b] = [b, a];
console.log(a); // 2
console.log(b); // 1

1.3 注意事项

  • 变量与数组元素从左向右一一对应。

    js 复制代码
    let arr = [1, 2, 3];
    let [b, c] = arr;
    console.log(b); // 1
    console.log(c); // 2
  • 当我们需要省略一些元素时,可以使用逗号来跳过这些元素

    javascript 复制代码
    let arr = [1, 2, 3];
    let [, b, c] = arr;
    console.log(b); // 2
    console.log(c); // 3

2 对象的解构赋值

2.1 基本用法

对象的解构赋值可以通过以下语法实现:

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ES6新特性: 解构赋值</title>
</head>

<body>
    <script>
        let obj = {
            name: 'Alice',
            age: 20,
            func: function () {
                console.log(name + '今年' + age + '岁')
            }
        };
        let { name, age, func } = obj;
        console.log(name); // 'Alice'
        console.log(age); // 20
        console.log(func);
    </script>
</body>

</html>

在上述代码中,我们将对象 obj 中的属性通过花括号的方式进行解构,并将属性值分别赋值给变量 name 、 age和func。控制台输出如下:

2.2 属性重命名

我们也可以在对象解构赋值时,将属性进行重命名,语法格式为:成员名: 新名

在下面代码中,name: n 表示将 name 属性重命名为 n,age: a 表示将 age 属性重命名为 a。

示例:

javascript 复制代码
let obj = {
    name: 'Alice',
    age: 20,
    func: function () {
        console.log(name + '今年' + age + '岁')
    }
};
let { name: n, age: a, func: f } = obj;
console.log(n); // 'Alice'
console.log(a); // 20
console.log(f);

得到同样的结果👇

2.3 注意事项

  • 花括号内的变量名要与对象的成员变量或成员方法名称一致
  • 花括号内的变量顺序可以任意
  • 花括号内的变量数量可以少于对象的成员数量,但是当花括号内的变量调用了其他成员的时候,需要同时在花括号内包含调用的成员。

示例:

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ES6新特性: 解构赋值</title>
</head>

<body>

    <script>
        let obj = {
            name: 'Alice',
            age: 20,
            func1: function () {
                console.log(name + '今年' + age + '岁')
            },
            func2: function () {
                console.log('我是func2')
            }
        };
        
        let { name, func1, age } = obj;
        func1();

        let { func2 } = obj;
        func2();
    </script>

</body>

</html>

输出:

html 复制代码
Alice今年20岁
我是func2

点击此处,获取关于ES6变量解构赋值的更多内容。

相关推荐
第九序言T2 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
龙亘川4 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人4 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
Raas1004 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
程序员大阳5 小时前
副队长JavaScript教程(50)-DOM:网页开发的起点
javascript·dom·es·节点·概念·document·关系
专注仿真5 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
jimy16 小时前
C++ 中的 `T&&`:右值引用与转发引用
开发语言·c++
呆呆虫126 小时前
用 orjson 加速 SerpBase 响应解析:基准对比与注意事项
开发语言·php
心疼你的一切6 小时前
Python自动发邮件实战定时发报表
大数据·开发语言·python
Wang's Blog7 小时前
Java 项目实战:交友项目 - 用户体系集成总结
java·开发语言·交友