ES6 解构赋值

栏目: JavaScript · 发布时间: 4年前

内容简介:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。之前,为变量赋值,只能指定值在ES6中可以写成

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

之前,为变量赋值,只能指定值

var a = 0;
var b = 1;
var c = 2;

在ES6中可以写成

var [a,b,c] = [1,2,3]
var {a,b,c} = { a:'1' , b:'2' , c:'3'}

ES6根据数组的下标对应位置,对变量进行赋值,也可以称为 ‘’模式匹配‘’ 只要 等号双边模式相同,左边的变量就会被赋予对应的值

var [a,b,c] = [1,2,3]
console.log(a) //输出 1
console.log(b) //输出 2
console.log(c) //输出 3
var { a , b , c } = { a:'1' , b:'2' , c:'3'}
console.log(a) //输出 1
console.log(b) //输出 2
console.log(c) //输出 3

如果解构赋值失败,对象的值会等于 undefined

var [a,b] = [1]
console.log(a) //输出undefined
console.log(b) //输出undefined
var { a } = { b:'1' }
console.log(a) //输出undefined

还有的情况为不完全解构,即 等号左边的模式 只 匹配一部分等号右边的数组,这种情况下,解构赋值依然可以成功

var [ a , c ] = [ 1 ,  2 , 3 , 4 ]
console.log(a) //输出1
console.log(c) //输出2

var [ a , [b] , c ] = [ 1 , [ 2 , 3] , 4 ]
console.log(a) //输出1
console.log(b) //输出2
console.log(c) //输出4

如果等号右边不为数组或不可遍历的解构,将会报错

var [a] = 1;
var [a] = NaN;
var [a] = undefined;
var [a] = null;
var [a] = { };
var [a] = false;

以上结构都会报错

解构赋值允许默认值

var [a = 1] = [ ]
console.log(a) // 输出1

var [a = 1] = [ null ]
console.log(a) // 输出null

ES6内部使用 严格相等运算符 === 判断一个位置是否有值,当数组成员严格等于undefined的时候,默认值才会生效,

当数组成员等于null的时候,默认值不会生效,因为js中null不严格等于undefined

注:如果将一个已经声明的变量用于结构赋值,会出现很多问题

var a ; 
{a} = { a:'1' } // 报错SyntaxError: syntax error

因为js引擎会将{a}理解成一个代码块,从而发生语法错误,只有不将大括号写在行首,避免js将其解释为代码块

var a ; 
({a} = { a:'1' });

字符串也可以解构赋值

var [a,b,c,d] = 'word';
console.log(a) // 输出 w
…
console.log(d) // 输出 d

因为在此时 , 字符串被转换成了一个类似数组的对象

学会解构赋值会让赋值更简单,代码更简短

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/25378.html

ES6 解构赋值

ES6 解构赋值 微信打赏

ES6 解构赋值 支付宝打赏

感谢您对作者Miya的打赏,我们会更加努力!    如果您想成为作者,请点我


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C语言程序设计

C语言程序设计

K. N. King / 吕秀锋、黄倩 / 人民邮电出版社 / 2010-4 / 79.00元

时至今日, C语言仍然是计算机领域的通用语言之一,但今天的 C语言已经和最初的时候大不相同了。本书最主要的一个目的就是通过一种“现代方法”来介绍 C语言,书中强调标准 C,强调软件工程,不再强调“手工优化”。这一版中紧密结合了 C99标准,并与 C89标准进行对照,补充了 C99中的最新特性。本书分为 C语言的基础特性、 C语言的高级特性、 C语言标准库和参考资料 4个部分。每章末尾都有一个“问与......一起来看看 《C语言程序设计》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具