首页 > Web开发 > 详细

ES6 第三章 变量的解构赋值 具体参照http://es6.ruanyifeng.com

时间:2019-06-20 19:58:47      阅读:120      评论:0      收藏:0      [点我收藏+]

1.基本用法

let [a, b, c] = [1, 2, 3];
左右两边解构格式要保持一致。

2.默认值

let [x, y = ‘b‘] = [‘a‘]; // x=‘a‘, y=‘b‘
let [x, y = ‘b‘] = [‘a‘, undefined]; // x=‘a‘, y=‘b‘

3,.字符串的解构赋值(这里只写了最简单的例子当然还有很多复杂的应用)

const [a, b, c, d, e] = ‘hello‘;
a // "h"
b // "e"
c // "l"
d // "l"
e // "o"

4.对象的解构赋值

解构不仅可以用于数组,还可以用于对象。

let { foo, bar } = { foo: ‘aaa‘, bar: ‘bbb‘ };
foo // "aaa"
bar // "bbb"

5.数值和布尔值的解构赋值

解构赋值时,如果等号右边是数值和布尔值,则会先转为对象。

let {toString: s} = 123;
s === Number.prototype.toString // true

let {toString: s} = true;
s === Boolean.prototype.toString // true

解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于undefinednull无法转为对象,所以对它们进行解构赋值,都会报错。

let { prop: x } = undefined; // TypeError
let { prop: y } = null; // TypeError

6.函数参数的解构赋值

function add([x, y]){
  return x + y;
}

add([1, 2]); // 3

7.圆括号问题

只要有可能导致解构的歧义,就不得使用圆括号。
不能使用圆括号的情况
1)变量声明语句
// 全部报错
let [(a)] = [1];

let {x: (c)} = {};
let ({x: c}) = {};
let {(x: c)} = {};
let {(x): c} = {};

let { o: ({ p: p }) } = { o: { p: 2 } };
2)函数参数
// 报错
function f([(z)]) { return z; }
// 报错
function f([z,(x)]) { return x; }

(3)赋值语句的模式

// 全部报错
({ p: a }) = { p: 42 };
([a]) = [5];

可以使用圆括号的情况只有一种:赋值语句的非模式部分,可以使用圆括号。

[(b)] = [3]; // 正确
({ p: (d) } = {}); // 正确
[(parseInt.prop)] = [3]; // 正确
个人觉得就知道前面大概怎么用就可以了,后面复杂的情况暂时还没发现有很好的用途。

 



ES6 第三章 变量的解构赋值 具体参照http://es6.ruanyifeng.com

原文:https://www.cnblogs.com/zhaoqiusheng/p/11060691.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!