Ecmascript 提案:空值合并运算符 "??"

简介

如果控制合并运算符 ?? 左边的值为 nullundefined ,表达式会返回控制合并运算符右边的值,否则返回左边的值。

已经进入 stage 4(Finished) 阶段,等待加入标准。

示例:

1
2
3
4
5
6
7
8
9
10
const user = {
name: "eson",
age: 0,
address: null,
gender: ""
};
const userName = user.name ?? "unknown"; // "eson"
const userAge = user.age ?? 18; // 0
const userAddress = user.address ?? "unknown"; // "unknown"
const userGender = user.gender ?? "male"; // ""

作用和使用场景

?? 主要可以用来获取对象属性值时替代 || 来设定默认值。使用 || 时,如果 || 左边的值为 0 或者空字符串,表达仍然降返回右边的值.

如:

1
2
3
const userAge = user.age || 18; // 18
const userAddress = user.address || "unknown"; // "unknown"
const userGender = user.gender || "male"; // "male"

使用 bable 插件支持空值合并运算符

安装插件

1
2
3
npm install --save-dev @babel/plugin-proposal-nullish-coalescing-operator
# or
yarn add @babel/plugin-proposal-nullish-coalescing-operator -D

babel 配置

1
2
3
{
"plugins": ["@babel/plugin-proposal-nullish-coalescing-operator"]
}

参考

推荐文章