es6之参数解构

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]

 

持续更新中...

上一篇:python中修改元组元素的值


下一篇:Java语言高级第十天