解构赋值,模板字面量

168 阅读1分钟

解构赋值

展开语法与解构赋值

[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]

默认值

[a=5, b=7] = [1];
console.log(a); // 1
console.log(b); // 7

变量交换

[a, b] = [b, a];

忽略某些返回值;

var [a, , b] = f();

无声明赋值

({a, b} = {a: 1, b: 2});

别名

var o = {p: 42, q: true};
var {p: foo, q: bar} = o;
 
console.log(foo); // 42 
console.log(bar); // true

For of 迭代和解构

var people = [
  {
    name: 'Mike Smith',
    family: {
      mother: 'Jane Smith',
      father: 'Harry Smith',
      sister: 'Samantha Smith'
    },
    age: 35
  },
  {
    name: 'Tom Jones',
    family: {
      mother: 'Norah Jones',
      father: 'Richard Jones',
      brother: 'Howard Jones'
    },
    age: 25
  }
];

for (var {name: n, family: {father: f}} of people) {
  console.log('Name: ' + n + ', Father: ' + f);
}

属性名解构

let key = "z";
let { [key]: foo } = { z: "bar" };

console.log(foo); // "bar"

模板字面量

转义使用\