ES6变量的解构赋值(二)对象的解构赋值
前面我们知道,数组的结构赋值需要按顺序进行赋值,
let [a,,c] = [,,]
console.log(a);//
console.log(c);//3 let [a,b] = [1];
console.log(a);//1
console.log(b);//undefined
而对象的解构赋值则是通过对象属性进行赋值,不需要按照顺序进行,而无法匹配的则为undefined
let {a,b,c}={b:,a:};
console.log(a);//
console.log(b);//
console.log(c);//undefined
实际上,对象的解构赋值的完整写法为:
let {a:a,b:b,c:c}={b:,a:};
console.log(a);//2
console.log(b);//1
console.log(c);//undefined
例如上边的例子中,等式左边属性名称与变量名相同,因此可以直接写成let {a,b,c}={b:1,a:2};
同理如果属性名与变量名不同,则不能简写
let {a:b} = {a:};
console.log(b);//1
//注意:b为变量名,a为属性名,不能够直接输出a
对象的解构赋值也可以设置变量默认值,默认值的生效条件为:对象属性的值严格("===")等于undefined
var {x = } = {};//x==>3
var {x = } = {x: undefined};//x==>3
var {x = } = {x: null};//x==>null
var {x = } = {x:};//x==>0
var {x: y = 3} = {};//y==>3
数组本身也是特殊的对象,可以进行对象的解构赋值
var arr=[,,];
let {:first,[arr.length-]:last}=arr;
console.log(first);//
console.log(last);//
对象解构赋值的应用:
1.可以很方便获取到现有对象的属性或方法
//console对象中log属性拥有打印功能,
//console对象赋值给创建的对象中的log,因此可以直接log()实现打印功能
const { log } = console;
log('hello') // hello 等同于console.log();
ES6变量的解构赋值(二)对象的解构赋值的更多相关文章
- ES6入门之变量的解构赋值(二)
前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...
- 深入理解ES6(二)(解构赋值)
变量的解构赋值 (1) 数组的解构赋值 1.基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring ). 只要等号两边的模式相同,左边的变量 ...
- 浅谈ES6数组及对象的解构
一.数组的解构,ES6的新特性,主要是方便操作数组,节省不必要的代码,提高代码质量. 上图例子中, example1: 之前想要获取数组中的值,只能挨个获取下标,然后取值 example2:ES6新特 ...
- 用vue.js学习es6(三):数组、对象和函数的解构
一.数组的解构: 以前的方式: var arr = [1,2,3]; console.log(arr[0]); //1 console.log(arr[1]); //2 现在的方式: var [a,b ...
- 浅谈C++中对象的复制与对象之间的相互赋值
C++对象的复制 有时需要用到多个完全相同的对象,例如,同一型号的每一个产品从外表到内部属性都是一样的,如果要对每一个产品分别进行处理,就需要建立多个同样的对象,并要进行相同的初始化,用以前的办法定义 ...
- ES6变量解构赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构ES6之前我们申明多个变量需要按照下面的方法: let l a=1; let b=2; let c=3; let d=4; ...
- ES6变量解构赋值的用法
一.数组赋值(从数组中提取值,按照对应位置,对变量赋值) 1. 完全解构(变量与值数目相等) let arr = [1, 2, 3]; let [a,b,c] = arr; console.log(a ...
- ES6 变量与解构(二)
一.变量的声明与使用 [测试示例需要在node环境中测试,浏览器环境下并不完全兼容ES6代码]ES6中可以使用 {} 来包含任意一段代码,被 {} 包裹的内容称为一个代码块(局部作用域) let关键字 ...
- ES6 变量的解构赋值
数组的解构赋值 var [a,b,c] = [1,2,3]; 左边是变量,右边是值,根据数据结构一一对应 只要等号两边的模式相同,左边的变量就会被赋予右边对应的值,必须模式相同 如果等号 ...
随机推荐
- Mybatis1
一.MyBatis介绍 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis ...
- 常用类-Excel-使用Aspose.Cells插件
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xm ...
- Linux 磁盘分区、挂载
一.分区介绍 mbr分区: 1.最多支持四个主分区 2.系统只能安装在主分区上 3.扩展分区要占一个主分区 4.mbr最大只支持2TB,但拥有最好的兼容性 gpt分区: 1.支持无限多个主分区(但操作 ...
- javaWeb核心技术第十篇之Filter
Web中有三大组件(需要配置web.xml) servlet:服务器端的小程序. Filter(过滤器):运行在服务器,对请求的资源进行过滤,对响应进行包装. 经典案例: 自动登录,网站全局编码,非法 ...
- ABP入门教程8 - 应用层创建应用服务
点这里进入ABP入门教程目录 创建目录 在应用层(即JD.CRS.Application)下创建文件夹Course //用以存放Course相关应用服务 在JD.CRS.Application/Cou ...
- JSON格式日期的转换
扒来的链接: https://blog.csdn.net/zhang33565417/article/details/99676975 感谢这位哥们儿的分享!
- 信号驱动式I/O
信号驱动式I/O是指进程预先告知内核,使得当某个描述符上发生某事时,内核使用信号通知相关进程. 异步I/O是进程执行I/O系统调用(读或写)告知内核启动某个I/O操作,内核启动I/O操作后立刻返回到进 ...
- CF53E Dead Ends
CF53E Dead Ends 洛谷评测传送门 题目描述 Life in Bertown has become hard. The city has too many roads and the go ...
- SQL查询--关于查询的练习题
下面的练习题出自LeetCode:https://leetcode-cn.com/problemset/database/,有兴趣的可以去上面刷刷题 练习题1:超过经理收入的员工 分析: 使用sql ...
- 解决SQL Server中无管理员账户权限问题
遇到忘记SQL Server管理员账户密码或管理员账户被意外删除的情况,如何在SQL Server中添加一个新的管理员账户?按一下步骤操作可添加一个windows账户到SQL Server中,并分配数 ...