美文网首页
变量的解构赋值

变量的解构赋值

作者: 小狮子_3e1e | 来源:发表于2017-04-17 13:24 被阅读0次

基本

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

比如要为a,b,c三个变量赋值

let a = 1;
let b = 2;
let c = 3;

es6允许写成

let [a,b,c]=[1,2,3]

只要两边的结构相同,左边的变量就会被赋予右边对应的值
当结构不成功,值会等于undefined

let [b] = []
let [a,b]=[1]

b的值会等于undefined
上面是一种情况 ,还有另一种情况

let [x,y] = [1,2,3] // x=1;y=2
let [x,[y],z]= [1,[2,3],4] // x=1 y=2 z=4

上面的情况为不完全结构,即只匹配一部分右边的数组,但是依旧可以结构成功
等号的右边必须是可遍历的结构,否则会报错

let [a] = 1;
let [a] = false;
let [a] = NaN;
let [a] = undefined;
默认值

解构允许有默认值

let [a,b=1] =[2]  // a=2 b=1 

ES6 通过严格相等运算符判断一个值是否有值, ===undefined 默认值才会生效

let [a=1]=[undefined];//a=1
let[a=1] = [null] ;//a=null

如果默认值是表达式,那么表达式只在没有值的情况下执行.
默认值可以使用结构赋值的其他变量,但该变量必须已经赋值否则会报错

let [x = y, y = 1] = [];     // ReferenceError

对象的解构与数组相似,但是数组按照顺序排列,变量取值可以根据次序觉得;对象没有顺序,所以变量必须与属性同名

let { a, b } = { a: "aaa", b: "bbb" };
a // "aaa"
b // "bbb"
let { c } = { a: "aaa", b: "bbb" };
c //'undefined'
函数参数

函数参数也可以解构赋值

function add([a, b]){
  return a + b;
}
//带默认值
function move({x = 0, y = 0} = {}) {
  return [x, y];
}

other

字符串,数字,布尔值,也可以解构
字符串会被转换成类似数组的对象,
数值和布尔值则会转成对象.
undefined和null不能转成对象,所以无法进行解构赋值

相关文章

  • 解构赋值

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

  • ES6笔记(解构赋值)

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

  • 变量的解构赋值

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

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

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

  • 解构赋值

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

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

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

  • ES6的解构赋值

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

  • 名词

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

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

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

  • Z03_变量的解构赋值

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

网友评论

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

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