ES6语法: 解构赋值

简介: ES6语法: 解构赋值

作用: ES6允许按照一定方式从数组和对象中提取值, 并对变量进行赋值, 这被称为解构赋值.

数组解构:

let [a, b, c] = [1, 2, 3]; 
console.log(a) 
console.log(b) 
console.log(c)

如果解构不成功,变量的值为undefined。

let [foo] = []; //Cannot redeclare block-scoped variable 'foo'
let [bar, foo] = [1];  //Cannot redeclare block-scoped variable 'foo'.

补充:

// 定向取法
let arr1 = [1, 2, 3];
let [,,d] = arr1;
console.log(d); //3
// 嵌套写法
let arr = [1, [2, 3], 4];
let [a, [b, ], c] = arr;
console.log(b); //2

对象解构:

let person = { name: 'zhangsan', age: 20 };  
let { name, age } = person; 
console.log(name); // 'zhangsan'  
console.log(age); // 20
let person = { name: 'zhangsan', age: 20 };  
let {name: myName, age: myAge} = person; // myName myAge 属于别名 
console.log(myName); // 'zhangsan'  
console.log(myAge); // 20

补充:

let code = "AAAA"
let res = {
  code: 200,
  data: {
    list: ["aaa", "bbb", "ccc"]
  }
}
// 重命名写法
let {code:co} = res;
console.log(co); // 200
// 数组嵌套写法
let {data:{list:[x, y, z]}} = res;
console.log(x, y, z); // aaa bbb ccc

实际应用:


对返回参数进行解构

function getData() {
  let res = {
    code: 200,
    data: {
      list: ["aaa", "bbb", "ccc"]
    }
  }
  test(res)
}
function test({code, data:{list}}) {
  console.log(code, list);
}
getData(); // 200 ['aaa', 'bbb', 'ccc']

注意:在解构语法中,冒号左边的用于匹配值,冒号右边的是真正的变量


相关文章
|
机器学习/深度学习 监控 算法
线性与非线性数据降维方法汇总(Python代码实现)
线性与非线性数据降维方法汇总(Python代码实现)
线性与非线性数据降维方法汇总(Python代码实现)
|
缓存 JavaScript 前端开发
【axios】二次封装——避免重复发送请求
【axios】二次封装——避免重复发送请求
785 0
【axios】二次封装——避免重复发送请求
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
284 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
12月前
|
SQL Java 数据库连接
MyBatis-Plus快速入门:从安装到第一个Demo
本文将带你从零开始,快速入门 MyBatis-Plus。我们将首先介绍如何安装和配置 MyBatis-Plus,然后通过一个简单的示例演示如何使用它进行数据操作。无论你是 MyBatis 的新手还是希望提升开发效率的老手,本文都将为你提供清晰的指导和实用的技巧。
2782 0
MyBatis-Plus快速入门:从安装到第一个Demo
|
存储 算法 Linux
【探索Linux】P.17(进程信号 —— 信号保存 | 阻塞信号 | sigprocmask() | sigpending() )
【探索Linux】P.17(进程信号 —— 信号保存 | 阻塞信号 | sigprocmask() | sigpending() )
261 0
|
JavaScript jenkins Java
Jenkinsfile 脚本放置源码仓库
Jenkinsfile 脚本放置源码仓库
242 0
|
API C++ Windows
Windows入门篇一之MSDN手册的使用和第一个窗口程序
Windows入门篇一之MSDN手册的使用和第一个窗口程序
Windows入门篇一之MSDN手册的使用和第一个窗口程序
|
存储 缓存 人工智能
2022互联网寒冬,看看阿里中间件团队如何降本提效?(2)
2022互联网寒冬,看看阿里中间件团队如何降本提效?
363 85
|
弹性计算 运维 监控
云服务器ECS的基础运维管理
本实验帮助您快速掌握云服务器ECS的基础运维管理,通过对实例、存储、镜像、快照、安全和监控等核心功能的管理,了解云服务器ECS运维的常见场景和并掌握相关的操作方法。
下一篇
开通oss服务