汇总 ES6 的一些新特性
可选运算符 ?
1 | // 期望数据 |
有时我们不知道某个函数是否在对象中实现,一个常见的场景是,某些旧版浏览器可能没有某些功能,我们可以使用可选运算符接来检测函数是否已实现。看如下代码:
1 | const data = { |
如果在可选链操作符之后是 undefined 或者 null则什么都不会执行,我们可以在以下测试中看到该规则的实际应用:
1 | let neighborCount = 0; |
空值合并 ??
以下是我们在JavaScript中看到的一些常见操作:
- 检查 null 或 undefined
- 给变量设置默认值
- 确保0,false和’’不设置默认值
这就是新提案的用武之地,现在我们可以这样做:
1 | value ?? 'default value'; |
管道运算符 |>
1 | function doubleSay (str) { |
这个提案目的是使链式调用函数更具可读性,在未来结合函数部分应用也可以很好的工作,类似下面这种使用方式:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17let result = 1
|> (_ => Math.max(0, _));
result //=> 1
let result = -5
|> (_ => Math.max(0, _));
result //=> 0
test('Async pipeline', async (t) => {
const asyncAdd = (number) => Promise.resolve(number + 5);
const subtractOne = (num1) => num1 - 1;
const result = 10
|> asyncAdd
|> (async (num) => subtractOne(await num));
t.is(await result, 14);
});