介绍
ECMAScript 2020 (ES11) 是 JavaScript 的最新版本,为了让开发者能够更加方便地处理值为 undefined 或 null 的情况,ES11 引入了一个新的操作符 - nullish coalescing operator (空值合并操作符)。
这个操作符被用来在一定程度上优化代码,并且在处理特殊情况时可以提供更好的可读性。
细节
该操作符由两个问号(??)组成,其语法如下:
const result = a ?? b;
该代码中,当 a
的值为 null 或 undefined 时,返回 b
的值,否则返回 a
的值。
-- -------------------- ---- ------- --- ------ ----------------- -- -------- -------- -- -------- ------ ----- - ----- ----------------- -- -------- -------- -- -------- ------ ----- - ---------- ----------------- -- -------- -------- -- -------- ------ ----- - ----- ------- ----------------- -- -------- -------- -- ----- ------
注意,nullish coalescing operator 仅在 a
的值为 null 或 undefined 时才会生效,其他 falsy 值(例如 0 或空字符串)不会触发该操作符,这一点与 JavaScript 中的 || 操作符是不同的。
-- -------------------- ---- ------- --- ----- - - -- -------- ------- ------------------- -- -------- ------ ----- - --------- -- -------- ------- ------------------- -- -------- ------ ----- - -- -- -------- ------- ------------------- -- -------- ------ ----- - ---- -- -------- ------- ------------------- -- -------- ------
使用场景
nullish coalescing operator 可以用于一些常见情况,比如处理函数的参数或对象属性的默认值。
function someFunc(options) { const name = options.name ?? 'default name'; const age = options.age ?? 18; console.log(name, age); } someFunc({ name: 'John', age: 30 }); // 'John' 30 someFunc({}); // 'default name' 18
const someObj = {}; const name = someObj.name ?? 'default name'; console.log(name); // 'default name'
总结
nullish coalescing operator 是 ES11 中的一个新操作符,它可以更好地处理值为 null 或 undefined 的情况,同时也可以提高代码的可读性。但需要注意,它仅仅只能处理 null 和 undefined,其他 falsy 值仍然需要使用其他方法来处理。对于处理函数参数的默认值、对象属性默认值等常见场景,nullish coalescing operator 是一种很好的选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64744631968c7c53b01a8eea