在 JavaScript 中,我们经常需要判断一个变量是否为 null
或 undefined
,然后再进行后续的操作。这个过程非常繁琐,而 ES10 中新增的 nullish 合并运算符(??
)可以让我们不再重复判空,从而简化代码。
nullish 合并运算符的定义
nullish 合并运算符是一个新的二元运算符,用来判断一个值是否为 null
或 undefined
,如果是,则返回一个默认值,否则返回该值本身。它的语法如下:
const result = a ?? b;
其中 a
和 b
是两个操作数,??
是 nullish 合并运算符。
nullish 合并运算符的优势
在 JavaScript 中,我们经常使用逻辑或运算符(||
)来判断一个变量是否为 null
或 undefined
,然后返回一个默认值。例如:
const name = person.name || 'unknown';
但是这种方法存在一个问题,当变量的值为 falsy 值(例如 0
、""
、false
等)时,逻辑或运算符会将其误判为 null
或 undefined
,从而返回默认值。这显然不是我们想要的结果。
nullish 合并运算符解决了这个问题,它只在变量的值为 null
或 undefined
时才返回默认值,对于其他 falsy 值则不会产生影响。例如:
const name = person.name ?? 'unknown';
这样就可以确保只有当 person.name
为 null
或 undefined
时才返回默认值,而不会误判其他 falsy 值。
nullish 合并运算符的使用场景
nullish 合并运算符可以用于任何需要判断变量是否为 null
或 undefined
的场景。例如,我们可以使用它来设置默认参数:
function sayHello(name) { name = name ?? 'unknown'; console.log(`Hello, ${name}!`); } sayHello(); // 输出 "Hello, unknown!" sayHello('Alice'); // 输出 "Hello, Alice!"
我们也可以将 nullish 合并运算符与可选链操作符(?.
)一起使用,以避免出现繁琐的判断语句:
// javascriptcn.com 代码示例 const person = { name: 'Alice', address: { city: 'Shanghai', street: 'Nanjing Road' } }; const street = person.address?.street ?? 'unknown'; console.log(street); // 输出 "Nanjing Road" const phone = person.phone?.number ?? 'unknown'; console.log(phone); // 输出 "unknown"
在这个例子中,我们使用了可选链操作符来判断 person.address.street
是否存在,如果存在则返回该值,否则返回 null
或 undefined
。然后我们再使用 nullish 合并运算符来判断该值是否为 null
或 undefined
,如果是,则返回默认值。
总结
ES10 中新增的 nullish 合并运算符可以让我们不再重复判空,从而简化代码。它能够正确地判断一个变量是否为 null
或 undefined
,并返回一个默认值。我们可以将它应用于任何需要判断变量是否为 null
或 undefined
的场景,例如设置默认参数、避免繁琐的判断语句等。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658065c7d2f5e1655db95cf9