JavaScript(ES6):变量的解构赋值
解构赋值定义:
允许按照一定模式从数组或对象中提取值,然后对变量进行赋值。
数组的解构赋值
注:数组的元素要一次排序的,变量的值由他的位置决定。
基本用法
// ES6 解构赋值
let [a, b, c] = [1, 2, 3]; // 等于
let a = 1;
let b = 2;
let c = 3;
如果结构不成功,变量的值就是undefined。
let [x, y, z] = [1, 2];
// x = 1;
// y = 2;
// z = undefined; 结构没有成功,值就是undefined;
如果等号右边不是数组(不具有Iterator),是会报错的。比如下面语句就会报错:
let [a] = 1;
let [a] = false;
let [a] = NaN;
let [a] = undefined;
let [a] = null;
let [a] = {};
事实上只要某种数据结构具有 Iterator 接口,都可以使用数组形式的解构赋值。
let [x, y, z, a] = new Set([1, 2, 3]);
x // 1
y // 2
z // 3
a // undefined
指定默认值
let [a, b = 2] = [1]; // a=1,b=2。b=2为默认值
let [a = 1, b = a] = [2]; //a=2,b=2。a=1为默认值,后被赋值为 2,a的值又被赋值为 b,所以b=2。
let [a = b, b = 1] = [2]; //a=2,b=1。b=1为默认值。
// 下面这种方式报错
let [a = b, b = 1] = []; // 不先给 a 赋值会报错,因为未给 a 赋值。要先给 a 赋值。
对象的解构赋值
注:对象的属性没有次序,变量必须与属性同名才能取得正确的值。
let { x, y } = { x: "a", y: "b" };
x // "a"
y // "b"
let { z } = { x: "a", y: "b" };
z // undefined
如果变量名与属性名不一致,要写成下面这样:
var { a: x } = { a: "1", b: "2" }
x // "1",a=undefined
let { first: f, last: l } = { first: "hello", last: "world" };
f // "hello"
l // "world"
就是说对象的解构赋值的内部机制是先找到相同名称的属性,然后赋值给变量,真正被赋值的是后者,不是前者。
字符串的解构赋值
字符串用于解构赋值时,字符串会被转换成一个类似数组的对象。
let [a, b, c, d, e] = "hello";
a // "h"
b // "e"
c // "l"
d // "l"
e // "0" // 类似数组的对象都会有一个length属性,可以这样写
let { length: len } = "hello";
参考书籍:
《ES6标准入门(第3版)》 阮一峰 著
JavaScript(ES6):变量的解构赋值的更多相关文章
- ES6 变量的解构赋值
数组的解构赋值 var [a,b,c] = [1,2,3]; 左边是变量,右边是值,根据数据结构一一对应 只要等号两边的模式相同,左边的变量就会被赋予右边对应的值,必须模式相同 如果等号 ...
- ES6 - 变量的解构赋值学习笔记
变量的解析赋值 数组的解析赋值 es6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,这就称为解构. var a = 1; var b = 2; var c = 3; //在es6中允许写成 ...
- es6变量的解构赋值学习笔记
1. 解构赋值的规则是,只要等号右边的值不是对象,就先将其转为对象.由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错. let { prop: x } = undefin ...
- ES6变量的解构赋值
变量的解构赋值 1.数组的解构赋值 2.对象的解构赋值 3.字符串的解构赋值 4.数值和布尔值的解构赋值 5.函数参数的解构赋值 6.圆括号问题 7.用途 1.数组的解构赋值 ES6 允许写成下面这样 ...
- es6—变量的解构赋值
数组的解构赋值 ]]]]]]] = []}} = {}} = {}})]: first]: last} = arr} = {}) {}))}))}) {}))}))].]]]])})] }}} = { ...
- ES6变量的解构赋值(一)数组的解构赋值
let[a,...arr]=[1,2,3,4];//a==>1 arr==>[2,3,4] let [x, y, ...z] = ['a'];//a==>'a' y==>und ...
- ES6变量的解构赋值(二)对象的解构赋值
前面我们知道,数组的结构赋值需要按顺序进行赋值, let [a,,c] = [,,] console.log(a); console.log(c);//3 let [a,b] = [1];consol ...
- ES6中的变量的解构赋值, 解放我们的双手,实现变量的批量赋值
ES6--变量的解构赋值 引言 正文 一.数组的解构赋值 解构失败 不完全解构 默认值 二.对象的解构赋值 三.字符串的解构赋值 结束语 引言 变量的解构赋值, 听起来很复杂, 简单点说可以理解成批量 ...
- ES6学习之变量的解构赋值
前言:什么是ES6?ECMAScript 6(简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.其中相比较于ES5新增了诸多的特性,并且ES6可转换为ES5的语法.- ...
- ES6标准入门 第三章:变量的解构赋值
解构赋值:从数组和对象中提取值,对变量进行赋值. 本质上,这种写法属于“匹配模式”:只要等号两边的模式相同,左边的变量就会被赋予对应的值. 1.数组的结解构赋值 基本用法 let [foo, [[ba ...
随机推荐
- Feign自定义重试策略及超时时间
背景 feign可以配置重试策略及超时时间,但是无法根据业务场景动态的设置.可能会引起接口幂等,无效重试资源耗费,大数据量耗时操作报超时异常等问题.所以需要更细粒度的重试策略及超时时间配置. 自定义重 ...
- vue项目node_modules文件过大问题
node_modules目录下.cache下最大文件删除即可(vue-loader)
- PostgreSql: 安装与链接
环境介绍 使用宝塔面板,在阿里云中安装PostgreSql,并使用DataGrip在本地进行链接 postgresql 配置 安装postgresql 在宝塔中安装postgresql 管理器 在此处 ...
- React报错:Module not found: Error: Can't resolve 'react-router-dom'
解决方案 npm install -S react-router-dom@5 参考链接 https://stackoverflow.com/questions/53914013/failed-to-c ...
- jQuery事件自动触发
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [nginx]借助nginx实现自动获取本机IP
前言 在用脚本自动化部署应用时,有的应用需要指定本机IP,网上找到的方案大多是过滤ifconfig或者ip命令的结果,这里提供一种通过nginx获取本机ip的方法.大致思路为客户端向nginx发起请求 ...
- 状压DP-学习笔记
状压DP 状压 \(DP\) 是一种基于二进制数的 \(DP\). T1 题目大意 将一个整数 \(N\) 分解成若干个小整数的乘积,满足: 分解出的整数必须来自集合 \(S\). 分解出的整数必须互 ...
- Oracle-21C导入dmp文件
1.前期工作 具体参考该博文 Windows操作系统安装Oracle数据库 下载安装Oracle数据库图形管理工具 2.连接和调整数据库环境 2.1.以数据库管理员身份登录数据库 ++++++++++ ...
- 别再用 offset 和 limit 分页了,性能太差!
不需要担心数据库性能优化问题的日子已经一去不复返了. 随着时代的进步,随着野心勃勃的企业想要变成下一个 Facebook,随着为机器学习预测收集尽可能多数据的想法的出现. 作为开发人员,我们要不断地打 ...
- JSTL常用代码总结
1. jstl判空: (1) 须先引人<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix=" ...