在 ECMAScript 2019 中,新增了一个空位合并运算符(nullish coalescing operator),它是一个双问号(??)符号。这个运算符的作用是当左侧表达式的结果为 null 或 undefined 时,才会返回右侧表达式的值。在本文中,我们将详细介绍这个运算符的用法和指导意义。
为什么需要空位合并运算符?
在 JavaScript 中,我们经常会遇到需要判断某个值是否为 null 或 undefined 的情况。通常我们会使用 || 运算符来实现这个功能,例如:
const value = null || 'default'; console.log(value); // 输出 'default'
这段代码的意思是,如果 value 为 null 或 undefined,那么就返回 'default'。但是,如果 value 的值为 0、空字符串、false 或者其他 falsy 值,那么也会返回 'default',这可能会导致一些意外的行为。
为了解决这个问题,ECMAScript 2019 引入了空位合并运算符。它只在左侧的值为 null 或 undefined 时才会返回右侧的值,否则返回左侧的值。例如:
const value = null ?? 'default'; console.log(value); // 输出 'default'
这段代码的意思是,如果 value 为 null 或 undefined,那么就返回 'default'。如果 value 的值为 0、空字符串、false 或者其他 falsy 值,那么返回的就是 0、空字符串、false 或者其他 falsy 值。
如何使用空位合并运算符?
空位合并运算符的使用非常简单,只需要在表达式中使用双问号(??)符号即可。例如:
const value = null ?? 'default';
这个表达式的意思是,如果 value 为 null 或 undefined,那么就返回 'default'。如果 value 的值不为 null 或 undefined,那么就返回 value 的值。
空位合并运算符还可以和其他运算符一起使用,例如:
const value = (null || undefined) ?? 'default';
这个表达式的意思是,如果 (null || undefined) 的值为 null 或 undefined,那么就返回 'default'。如果 (null || undefined) 的值不为 null 或 undefined,那么就返回 (null || undefined) 的值。
空位合并运算符的指导意义
空位合并运算符的引入,使得我们在判断变量是否为 null 或 undefined 时更加精确,避免了一些意外的行为。它可以帮助我们更好地处理默认值、函数参数等情况,提高了代码的可读性和健壮性。
示例代码
下面是一些示例代码,演示了空位合并运算符的用法:
-- -------------------- ---- ------- -- - ---------------- ----- ---- - ---- -- ---------- ------------------ -- -- --------- -- - ----------------- -------- ----------- - ---- - ---- -- ----------- ------------------- ----------- - -------- -- -- ------- ---------- -------------- -- -- ------- ------ -- - ----------------- ----- ------ - - ----- ------- ---- ----- -- ----------------------- -- ----------- -- -- ------ ---------------------- -- ----------- -- -- ---------
总结
本文介绍了 ECMAScript 2019 中新增的空位合并运算符,它可以帮助我们更加精确地判断变量是否为 null 或 undefined,避免了一些意外的行为。空位合并运算符的使用非常简单,只需要在表达式中使用双问号(??)符号即可。希望本文可以帮助读者更好地理解和使用空位合并运算符。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6511dc7b95b1f8cacda5d357