ES10 中的 Nullish Coalescing 运算符(??)是一个新的逻辑运算符,用于判断一个值是否为 null 或 undefined。它可以用来简化代码,避免出现一些常见的错误,同时也可以提高代码的可读性和可维护性。
什么是 Nullish Coalescing 运算符?
Nullish Coalescing 运算符是一个二元运算符,用于判断一个值是否为 null 或 undefined。它的语法如下:
const result = value1 ?? value2;
如果 value1 不为 null 或 undefined,则返回 value1;否则返回 value2。
为什么需要 Nullish Coalescing 运算符?
在 JavaScript 中,我们经常需要对变量进行判断,以避免出现一些常见的错误。例如,当我们需要获取一个对象的属性时,需要判断该对象是否存在,否则会出现 TypeError 错误:
const obj = {}; const prop = obj.prop; // TypeError: Cannot read property 'prop' of undefined
为了避免这种错误,我们通常会使用短路运算符 || 来判断一个变量是否存在:
const obj = {}; const prop = obj.prop || 'default'; // 'default'
但是,这种方法有一个问题:当变量的值为 falsy 值时,也会被认为是不存在。例如,当变量的值为 0 或 '' 时,也会被认为是不存在:
const obj = { prop: '' }; const prop = obj.prop || 'default'; // 'default'
为了避免这种问题,我们需要使用更严格的判断方法,例如 Object.prototype.hasOwnProperty() 或 typeof 运算符。但是,这些方法可能会导致代码变得更加复杂和难以维护。
Nullish Coalescing 运算符可以帮助我们解决这个问题,它只会判断一个变量是否为 null 或 undefined,而不会将 falsy 值当作不存在。
如何使用 Nullish Coalescing 运算符?
使用 Nullish Coalescing 运算符非常简单,只需要将两个值用 ?? 运算符连接起来即可。例如:
const obj = {}; const prop = obj.prop ?? 'default'; // 'default'
在这个例子中,如果 obj.prop 的值为 null 或 undefined,则 prop 的值为 'default';否则 prop 的值为 obj.prop 的值。
Nullish Coalescing 运算符也可以与其他运算符一起使用,例如:
const obj = {}; const prop = obj.prop1 ?? obj.prop2 ?? 'default'; // 'default'
在这个例子中,如果 obj.prop1 和 obj.prop2 的值都为 null 或 undefined,则 prop 的值为 'default';否则 prop 的值为第一个不为 null 或 undefined 的属性的值。
总结
Nullish Coalescing 运算符是一个非常有用的运算符,它可以帮助我们简化代码、避免常见错误、提高代码的可读性和可维护性。在使用 Nullish Coalescing 运算符时,需要注意它只会判断一个变量是否为 null 或 undefined,而不会将 falsy 值当作不存在。因此,需要根据具体的情况选择合适的运算符来判断变量是否存在。
示例代码
const obj1 = { prop: '' }; const obj2 = { prop: 'value' }; const prop1 = obj1.prop ?? 'default'; // '' const prop2 = obj2.prop ?? 'default'; // 'value' const prop3 = obj1.prop || 'default'; // 'default' const prop4 = obj2.prop || 'default'; // 'value'
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65bf0493add4f0e0ff88cf8f