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

变量的结构赋值

作者: 萘小蒽 | 来源:发表于2019-06-02 21:05 被阅读0次

1. 数组的解构赋值

  • 基本用法
let [ a ,b ,c ] = [ 1, 2 , 3 ];
let [a , [ b ,c ] ] = [1, [ 2 ,3 ]];
let [  ,  b , c  ] = [1,  2 , 3 ]; //c = 3; b=2
//const 
const [ a ,b ,c ] = [ 1, 2 , 3 ];
//var 
var  [ a ,b ,c ] = [ 1, 2 , 3 ];
  • 数组解构遵循‘匹配模式’,从数组中提取值,按照位置的对应关系对变量赋值。
  • 解构模式不但适用于var命令,也适用于letconst命令。
  • 解构默认值
var [x=1] =  [ ];
 x  // 1
var [x=1] =  [ null ];
x //null
  • 赋值undefined
x //1
[x ,y ='a' ] = [ 'c' ]  // x = 'c' , y = 'a'
[x ,y ='a' ] = [ 'c' ,undefined ]  // x = 'c' , y = 'a'
  • 默认值不存在
var [ a = f() ] = [ 1 ];
a //1
  • es6内部使用 ‘===’运算符,判断一个位置是否有值,如果结构数组位置成员 ‘=== undefined’,默认值就会生效。
  • 默认值不存在的时候,默认值不会生效。
  • 默认值和赋值都不存在报错。

2. 对象的解构赋值

对象的结构赋值必须遵守变量和赋值对象的属性同名,才能取到值。

  • 位置次序不影响对象赋值。
var { foo, bar }  = { bar: 1, foo: 2 };
foo //2 
bar //1
  • 没有对应值,导致取不到。
var { baz }  = { bar: 1, foo: 2 };
baz // undefined
  • 变量和属性名不一致,但能成功赋值。注意赋值的是baz不是foo,foo是模式,不是变量!
var { foo: baz }  = { bar: 1, foo: 2 };
baz //2 
foo//   error: foo is not defined
  • 实际上的对象解构赋值是以下形式的简写
var {foo: foo, bar: bar }  = { foo: 1, bar: 2 };
var obj = { bar: { bar: 1, foo: 2 }, foo: 2 };
var {bar, foo} = obj;
bar === obj.bar // true
  • 解构嵌套结构的对象
var arr = [];
var obj = {};
({ bar: obj.prop, foo:arr[0] } = {bar: 123,foo: true });
 arr  // [ true ]
 obj // { prop: 123 } 

对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。

  • 对象解构默认值,
var {x = 3} = {}
x//3
var { x  = 5, y}{x:null, y: 2 }
x// null
y// 2
  • 对象和数组的解构赋值都遵循“严格等于undefined,默认值生效”
  • 已声明的变量参与解构赋值要非常小心。
var x ;
{x }:{ x:2 }
// error 
  • 原型上的属性也是可以解构赋值的
var a = {b: 1 }
a.__proto__.c = 2 ;
var {b, c } = a ;
b//1
c//2 

3. 字符串的解构赋值

  • 字符串的解构时,字符串被转换成了一个类似数组的对象。
var [a, b, c, d, e ] = "hello";
a // 'h'
b // 'e'
c // 'l'
d // 'l'
e // 'o'
  • 类似数组的对象都有length属性,因此还可以对这个属性解构赋值。
let { length: len } = 'hello';
len // 5

相关文章

  • C中的结构体

    C语言的结构体生成以及赋值方法,打点调用,以及->调用 赋值总结:如何取出以及赋值结构体中的成员变量1.结构体变量...

  • 变量的结构赋值

    参考:变量的解构赋值即根据模式来匹配变量值。 用途 交换变量的值 从函数返回多个值 函数参数的定义 提取JSON数...

  • 变量的结构赋值

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

  • 变量的结构赋值

    合理使用ES6中变量的结构赋值会改变代码的整洁度和流畅性。 数组的结构赋值 1.如果结构赋值不成功,变量值就等于u...

  • 变量的结构赋值

    数组的结构赋值 上面的这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值,如果变量找不...

  • 变量的结构赋值

    1.数值的解构赋值: 基本用法: ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(D...

  • 变量的结构赋值

    ES6 变量的解构赋值 解构赋值本质上是“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。 解构...

  • 变量的结构赋值

    1. 数组的解构赋值 基本用法 数组解构遵循‘匹配模式’,从数组中提取值,按照位置的对应关系对变量赋值。解构模式不...

  • C/C++基础(3)

    结构体 定义结构体的方式 结构体赋值 相同类型的两个结构体变量,可以相互赋值把t1成员变量的值拷贝到t2成员变量的...

  • ES6学习笔记——解构赋值

    变量的结构赋值 数组的解构赋值 ES6允许从数组中提取值,按照对应的位置,对变量赋值。 如果解构不成功,变量的值就...

网友评论

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

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