在 ECMAScript 2021 中,新增了一个逻辑运算符 ??=
,称为 Logical nullish assignment operator,可以用于为变量赋默认值。
问题背景
在开发过程中,我们经常需要为变量设置默认值,以防止出现未定义的情况。通常我们会使用逻辑或运算符 ||
来实现这个目的,例如:
let variable = undefined; variable = variable || 'default value'; console.log(variable); // 输出 "default value"
这种方法基本可行,但是如果变量的值本身为假值(例如 false
、0
、''
等),那么变量将被赋予默认值。这可能并不是我们所期望的结果,因此需要一种更为精确的方法来为变量设置默认值。
解决方案:Logical nullish assignment operator
ECMAScript 2021 引入了 Logical nullish assignment operator ??=
,它可以为变量赋默认值,并且只在变量的值为 null 或 undefined 时才起作用。
使用方法如下:
let variable = undefined; variable ??= 'default value'; console.log(variable); // 输出 "default value"
如果变量的值不是 null 或 undefined,则 ??=
运算符不会生效,变量的值仍然是原来的值。
let variable = 'existing value'; variable ??= 'default value'; console.log(variable); // 输出 "existing value"
总结
Logical nullish assignment operator ??=
是 ECMAScript 2021 中引入的新特性,它可以精确地为变量赋默认值,避免了使用逻辑或运算符带来的不精确性。
开发者可以在需要为变量赋默认值时使用 ??=
运算符,从而更加精确地实现变量默认值的赋值操作。
参考代码:
let variable = undefined; variable ??= 'default value'; console.log(variable); // 输出 "default value" let variable2 = 'existing value'; variable2 ??= 'default value'; console.log(variable2); // 输出 "existing value"
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c23cd983d39b4881645572