ECMAScript 2020 是 JavaScript 编程语言的最新标准,它引入了一项新的语法特性:nullish 合并操作符(nullish coalescing operator)。本文将详细介绍 nullish 合并操作符及其实际使用场景,并提供示例代码。
什么是 nullish 合并操作符?
nullish 合并操作符 ?? 是一个新的逻辑运算符,用于判断一个值是否是 null 或 undefined。它和传统的 || 运算符不同, || 运算符会将 falsy 值(比如 false、0、"")转为 false,导致一些错误的结果;而 ?? 运算符只有在值为 null 或 undefined 时才返回右侧的默认值。
以下是一个简单的示例,展示了两个运算符的区别:
let x = null; let y = 10; let z1 = x || y; let z2 = x ?? y; console.log(z1); // 10 console.log(z2); // null
在上面的代码中,变量 x 被赋了一个 null 值,因此 z1 的值为 y,即 10;而 z2 的值为 null,因为 ?? 运算符判断了 x 的值为 null。
nullish 合并操作符的实际使用
nullish 合并操作符主要被用于设置默认值,因为它能够防止将 falsy 值当作默认值:
function test(x, y, z) { y = y ?? 20; z = z ?? 30; console.log(x, y, z); } test(10, null, undefined); // 10 20 30
上面的 test 函数中,y 和 z 都被使用了 ?? 运算符设置了默认值,x 没有使用,因此输出结果中 y 为 20,z 为 30。
另一个常见的场景是在访问对象属性时使用 nullish 合并操作符:
-- -------------------- ---- ------- --- ----------- - - ----- ------- ---- ---------- -------- ----- -- ---------------------------- -- ----------- -- ---- --------------------------- -- ----------- -- ------- ------------------------------- -- ----------- -- ----
在上面的代码中,对象 userProfile 中的属性值可能为 undefined 或 null,使用 ?? 运算符可以很好地处理这种情况,避免了无意义的操作。
总结
nullish 合并操作符 ?? 是 ECMAScript 2020 中的一项新增语法特性,可以用于判断一个值是否为 null 或 undefined,并设置默认值。与传统的 || 运算符不同,nullish 合并操作符避免了将 falsy 值当做默认值的错误。在使用对象属性时,nullish 合并操作符也能很好地帮助我们处理 undefined 和 null 值。这项新特性的引入将大大减少代码的错误和不必要的麻烦。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64cbe0ec5ad90b6d0422fb99