0 什么是解构?
德里达从语言观念的分析入手,对西方形而上学传统思维方式的反思。指对有形而上学稳固性的结构及其中心进行消解,每一次解构都表现为结构的中断、分裂或解体,但是每一次解构的结果又都是产生新的结构。对上帝万能的认识是一次解构;理性将其拆解,同时建立了自己的结构。
当然 上面是复制.很绕
个人感觉 就是 把某个东西解析,然后重新构建
在es6 中的体现是将某个对象或者数组等进行解析,然后按照一定规则 构建到新的对象或其他类型中
1.变量解构赋值的方法
标准中的解析篇章 14.3.3 Destructuring Binding Patterns 篇章
https://tc39.es/ecma262/#sec-destructuring-binding-patterns
全英文.有点难理解,写一下自己的理解
使用解构的 object 和 array 两种
object 的解构
示例1: 对象属性值解构
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
//foo值为'aaa' bar值 为'bbb'
属性的解构
有两中写法
一种是SingleNameBinding[?Yield, ?Await] 属性名与变量名相同的情况下,可以简化成 一次,例如
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
另外一种是 PropertyName[?Yield, ?Await] : BindingElement[?Yield, ?Await] 当属性名与变量名不一致的时候 需要全写 属性名:绑定的值 例如
let { foo:ss, bar } = { foo: 'aaa', bar: 'bbb' }; //ss的值为'aaa'
注:多个属性解构的时候 用逗号隔开 ,两种模式可以混合使用
数组的解构
array的解构的 符号 是 中括号
let [a, b, c] = [1, 2, 3];
Elision (略过某系index)的写法
使数组的index+1,即跳过一个 符号为 逗号 ,例如
let [, , a] = [1, 2, 3];//a的值为 3
注:如果len超过2^32-1,上述设置将抛出。
特殊情况
1.字符串的解构
字符串可以作为字符的数组对象(这里没找到相关的文档,现象差不多)来进行解构 ,eg:
let[a,b]="Hello" //a 的值 为H ,b的值为e
2.不定元素与解构
ES6引入了“不定元素”的概念:在变量前添加三个点(…)就表明这是一个不定元素。不定元素是一个数组,会将等号右侧数组中的多余元素放入这个特定变量中。不定元素之后不能再有其他变量。
let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
持续更新中...