es6--解构

 

 

let node = {
        type : 'identifier',
        name : 'foo'
};
let {type,name} = node;
console.log(type);//'identifier'
console.log(name);//'foo
let node = {
        type : 'identifier',
        name : 'foo'
};
let {type:localType,name:localName} = node;
console.log(localType);//'identifier'
console.log(localName);//'foo'

 

注意点

  • 使用var、let、const对对象进行解构时,必须提供初始化器(即等号右边的值)
  • 不使用var、let、const赋值时,需要将解构语句使用()进行包裹

 

({type,name} = node);//{}在js中作为代码块,单独使用加等号会报错会报错
默认值
当你使用解构赋值语句时,如果指定的本地变量没有同名属性,那么该变量会被赋值为undefined,可以对其进行指定默认值
 let node = {
      type : 'identifier',
      name : 'foo'
  };
  let {type,name,val} = node;
  console.log(val);//undefined
  ({type,name,val = '234'}  = node)
  console.log(val);//'234'
    嵌套的对象解构
    使用类似于对象字面量的语法,可以深入到嵌套的对象结构中去提取你想要的数据

 let node = {
     type: "Identifier",
     name: "foo",
     loc: {
       start: {
             line: 1,
             column: 1
        },
       end: {
             line: 1,
             column: 4
        }
    }
};
let { loc: { start }} = node;
console.log(start.line); // 1
console.log(start.column); // 1

 

这种方法使得本地变量start被赋值node中的loc的start对象,值得注意的是这种操作与直接node.loc.start的赋值是一致的,所以要注意值类型与引用类型的区别

注意点:此语句中并没有任何变量被绑定

   // 没有变量被声明!
  let { loc: {} } = node;

 

posted @ 2020-07-02 10:50  jentary  阅读(134)  评论(0编辑  收藏  举报