前端是万能的让前端飞

ES6 解构赋值圆括号的使用

2019-05-10  本文已影响6人  肆意木

ES6 的规则,只要有可能导致解构的歧义,就不得使用圆括号。

可以使用圆括号进行解构赋值的情况:赋值语句的非模式部分

非模式部分:为了区别于表达式,一定的结构模式(自己的理解,不是官方解释,慎用)

[(a)] = [3];
({key:(s)} = {hello:19});
[(parseInt.prop)] = [3]
console.log(a)                                        //3
console.log(s)                                        //undefined
console.log(parseInt)                                 //{ [Function: parseInt] prop: 3 }
console.log(parseInt.prop)                            //3

首先它们都是赋值语句,而不是声明语句;其次它们的圆括号都不属于模式的一部分。

不可以使用圆括号进行解构赋值的情况:

//都会报错
let [(a)] = [1];
let {x: (c)} = {};
let ({x: c}) = {};
let {(x: c)} = {};
let {(x): c} = {};
let { o: ({ p: p }) } = { o: { p: 2 } };

+函数参数

// 报错
function f([(z)]) { return z; }
// 报错
function f([z,(x)]) { return x; }

+赋值语句的模式

// 全部报错
({ p: a }) = { p: 42 };
([a]) = [5];
// 报错
[({ p: a }), { x: c }] = [{}, {}];
上一篇 下一篇

猜你喜欢

热点阅读