第3章 变量的解构赋值

  1. 解构:ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。
  2. 数组的解构赋值:按照位置的对应关系对变量赋值。前提:等号右边的值是可遍历的结构

//完全解构 let [a,b,c]=[1,2,3]; // a=1, b=2, c=3 // 不完全解构 var [d,[e],f]=[1,[2,3],4]; // d=1, e=2, f=4 //允许指定默认值 var [foo="foo"]=[]; // foo="foo" //默认值为表达式时,惰性求值 function f(){ // g能取到值,函数f不会执行 console.log("我不会执行"); } let [g=f()]=["默认值"]; // g="默认值" // 默认值可以引用解构赋值的已经声明的变量 let [h=1,i=h]=[2]; // h=2, i=2

  1. 对象的解构赋值:取与变量同名的属性的值

//对象的解构赋值 var {foo,bar}={ bar:"aaa" , foo:"bbb" }; // foo="bbb", bar="aaa" //真正被赋值的是后者,不是前者 let {foo:baz}={foo:"aaa",bar:"bbb"}; // foo为模式,baz为变量 console.log(baz); // baz="aaa" console.log(foo); // ReferenceError:foo is not defined

  1. 解构赋值的默认值生效的条件:对象的属性值严格等于undefined;
    如果解构失败,则变量的值为undefined
  2. 解构赋值时在模式中不能使用圆括号的情况:
    (1). 变量声明语句中
    (2). 函数参数中
    (3). 不能将整个模式或嵌套模式中的一层放在圆括号中
  3. 可以使用圆括号的情况:赋值语句的非模式部分可以使用圆括号

你可能感兴趣的:(第3章 变量的解构赋值)