定义

在ES6中定义了一种解构赋值的语法,将等号右边的对象中的数据导出到左边对应的变量中。
多用于数组、对象的属性取值操作

简单示例

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

特点

1. 表达式的等号左边和右边的结构必须保持一致,没有对应上的返回undefined

数组实例:

  1. let [a,b,c] = [1,3,"hello"];
  2. console.log(a); //1
  3. console.log(b); //3
  4. console.log(c); //"hello"
  5. let [a , [b, c], d] = [4, [5 , 'hello']];
  6. console.log(a); //4
  7. console.log(b); //5
  8. console.log(c); //"hello"
  9. console.log(d); //undefined , 没有对应上字段

对象实例:

  1. let user = {
  2. name:'ken',
  3. age:30,
  4. job:'javascript'
  5. };
  6. let { name, age , job, skill } = user;
  7. console.log(name); //ken
  8. console.log(age); //30
  9. console.log(job); //"javascript"
  10. console.log(skill); //undefined , user对象中没有设置skill属性

2. 等号左边接收赋值时,可定义默认值

  1. let user = {
  2. name:'ken',
  3. age:30
  4. };
  5. let { name, age , job='javascript' } = user;
  6. console.log(name); //ken
  7. console.log(age); //30
  8. console.log(job); //"javascript", user对象中没有设置job属性,解构时设置了默认值
  9. let [a , [b, c], d='10'] = [4, [5 , 'hello']];
  10. console.log(a); //4
  11. console.log(b); //5
  12. console.log(c); //"hello"
  13. console.log(d); //'10' , 虽然没有对应上字段,但是设置默认值了