美文网首页es6
第2章 变量的解构赋值

第2章 变量的解构赋值

作者: 短腿叔叔 | 来源:发表于2019-01-17 14:31 被阅读13次

基本用法

es6允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称为解构。
以前,为变量赋值只能直接将值指定给变量。

let a = 5;
const b = 10;
var c = 15

而es6允许写成这样:

let [a,b,c] = [5, 10, 15]
// 这句代码表示,可以从数组中根据对应的数组位置(下标)取到对应的值,并赋值给对应的变量

本质上,这种写法属于『模式匹配』,只要等号两边的模式相同,左边的变量就会被赋予对应的值,比如下面这种情况:

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

解构赋值可以设置默认值,如果解构不成功,返回的值为undefined

let [ a = true,b, ...c ] = [] 
console.log(a) // true ,这样也是可以获取到值的
console.log(b) // undefined
console.log(c) // []

es6内部使用严格相等运算符(===)来判断一个位置是否有值。所以如果数组内的值不严格等于undefined,那么默认值是不会生效的。

let [a = 1, b = 2]  = [null, undefined]
console.log(a) // null
console.log(b) // 2

默认值可以引用解构赋值的其他变量,前提是该变量必须已经先声明。

let [a = 1, b = a] = []
console.log(b) // 1
let [x = 1 , b = a] = [2]
console.log(b) // 2
let [x = b , b = 1] = []
console.log(x) // 报错,因为b还未声明

对象的解构赋值

解构赋值不仅可以对数组赋值,还可以对对象进行赋值,不过与数组赋值不同的是,对对象进行解构赋值,对应的不再是变量所处的位置,而是与对象中属性名相同的变量才能进行赋值。而且,与数组不同的是,真正被赋值的是后者,而不是前者

let {a: x, b: y} = {a:2, b: 5}
console.log(x, y) // 2,5
 console.log(a, b) // 报错,a、b为undefined

对象赋值也可以嵌套赋值

let  obj =  { p: [ 'hello', { y: 'world'}]}
let {p: [x, { y } ]} = obj
console.log(y) // world
// 此处的p是模式,不会被赋值,要想p也被赋值,可以写成以下这种形式
let {p, p: [x, { y } ]} = obj
console.log(p)  // [ 'hello', { y: 'world'}]

解构赋值右边的内容只要不是对象或数组形式的数据,都会先被转换成对象形式,null和undefined不能被转换成对象。

相关文章

  • 解构赋值

    解构赋值:ES6 中新增了变量赋值的方式,从数组和对象中提取值,对变量进行赋值。 单独赋值给变量,解构赋值。 解构...

  • ES6笔记(解构赋值)

    ES6笔记(解构赋值) 解构赋值 变量的解构: 解构赋值允许指定默认值。 解构赋值必须保证赋值方 被赋值方类型一...

  • 变量的解构赋值

    数组的解构赋值: 解构,就是从数组和对象中提取值,然后对变量进行赋值 解构赋值: 解构不成功,变量的值就等于und...

  • ES6系列之变量的解构赋值

    本篇目录: 数组的解构赋值变量声明并赋值时的解构变量先声明后赋值时的解构不完全解构默认值交换变量解析一个从函数返回...

  • 解构赋值

    解构赋值 数组的解构赋值 嵌套,默认值,展开符 对象的解构赋值 对象解构赋值的本质与简写 对象解构的模式与变量 对...

  • 『ES6脚丫系列』变量的解构赋值

    『ES6脚丫系列』变量的解构赋值 第一章:变量的解构赋值的概念 【01】Q:什么是变量的解构赋值?有哪些方式? 吃...

  • ES6的解构赋值

    一、前言 什么是“解构赋值”呢?就是从数组或者对象中取值,对变量进行赋值,这就是变量的解构赋值。 二、数组的解构赋...

  • 名词

    1 解构: 从数组或对象中提取值,给变量赋值这被称为解构解构赋值的变量都会重新声明解构赋值的规则是,只要等号右边的...

  • 变量的解构赋值 - 字符串、数值、布尔值、函数参数

    一、字符串的解构赋值 二、数值和布尔值的解构赋值 三、函数参数的解构赋值 变量的解构赋值 - 数组篇[https:...

  • Z03_变量的解构赋值

    变量的解构赋值 数组的解构赋值 ES 中从数组和对象之中提取数值,对变量进行赋值,这个过程称为解构 1. 对于 S...

网友评论

    本文标题:第2章 变量的解构赋值

    本文链接:https://www.haomeiwen.com/subject/uglidqtx.html