首页 > 代码库 > 《深入理解ES6》之解构
《深入理解ES6》之解构
结构是一种打破数据解构,将其拆分为更小部分的过程。
对象解构
对象字面量的语法形式是在一个赋值操作符左边放置一个对象字面量。
let node={ type:"indefine", name:"foo"};let{type,name}=node;console.log(type);//indefineconsole.log(type);//foo
解构赋值
可以在定义变量之后想要修改它们的值。
let node={ type:"indefine", name:"foo"},type="literal",name=5;({type,name}=node);console.log(type);//indefineconsole.log(type);//foo
一定要用一对小括号包裹解构赋值语句,JavaScript引擎讲一对开放的花括号视为一个代码块,而语法规定,代码块语句不允许出现在赋值语句左侧,添加小括号后可以将快语句转化为一个表达式,从而实现整个解构赋值的过程。
默认值
当指定的属性不存在,这个局部变量会被赋值为undefined,也可以随意定义一个默认值,在属性名称后面添加一个等号和相应的默认值。
let node={ type:"indefine", name:"foo"}let{type,name,value=true,age}=node;console.log(type);//indefieconsole.log(type);//fooconsole.log(value);//trueconsole.log(age);//undefined
为非同名局部变量赋值
使用解构赋值来声明变量localType和localName,这两个变量分别包含node.type和node.name属性的值。
let node={ type:"indefine", name:"foo"}let{type:localType,name:localName,age=4}=node;console.log(localType);//indefieconsole.log(localName);//fooconsole.log(age);//4
嵌套对象解构
let node={ type:"indefine", name:"foo", loc:{ start:{ line:1, column:2 }, end:{ line:1, column:4 } } }; let{loc:{start:localStart}}=node; console.log(localStart.line);//1 console.log(localStart.column);//2
解构模式可以应用于任意层级深度的对象,且每一层都具有同等的功能。
数组解构
解构赋值,数组解构可以赋值上下文,但不需要用小括号包裹表达式。
let colors=["red","green","blue"], firstColor="black", secondColor="purple";[firstColor,secondColor]=colors;console.log(firstColor);//red
数组解构可以交换两个变量的值。
let a=1,b=2;[a,b]=[b,a];
console.log(a);//2console.log(b);//1
嵌套数组解构与嵌套对象解构的语法类似。
let colors=["red",["green","ligntgreen"],"blue"];let [firstColor,[secondColor]]=colors;console.log(firstColor);//redconsole.log(secondColor);//green
可以讲不定元素应用到数组解构中。可以将数组中的其余元素赋值给一个特定的变量,也可以实现数组复制的功能。
let colors=["red","green","blue"];let[firstColor,...restColor]=colors;console.log(firstColor);//redconsole.log(restColor[0]);//greenvar fruits=["apple","bannan"];[...cloneF]=fruits;console.log(cloneF);//[apple,bannan]
《深入理解ES6》之解构
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。