null 运算符:赋予你代码语义的超级英雄
2023-11-23 22:17:28
JavaScript 中的 null 运算符(??)是赋值运算符的一个近亲,但它有着独特的魔力。它可以简化代码、提高可读性,还可以让你的代码语义更加明确。
null 运算符的作用
null 运算符的作用是,如果其左边的操作数为 null 或 undefined,则返回其右边的操作数。否则,返回其左边的操作数。
例如,以下代码:
const name = null ?? 'John Doe';
将把变量 name 赋值为 "John Doe"。这是因为 null 运算符的左边操作数是 null,所以它返回其右边操作数 "John Doe"。
null 运算符的运算优先级
null 运算符的运算优先级与赋值运算符相同,都是最低的。这意味着,它会在所有其他运算符之后执行。
例如,以下代码:
const result = 1 + 2 ?? 3;
将把变量 result 赋值为 3。这是因为加号的运算优先级高于 null 运算符,所以先执行加法运算,得到 3。然后,再执行 null 运算符,由于其左边操作数不是 null 或 undefined,所以返回其左边的操作数 3。
null 运算符的短路求值特性
null 运算符还具有短路求值特性。这意味着,如果其左边的操作数为 null 或 undefined,则其右边的操作数不会被执行。
例如,以下代码:
const name = null ?? getName();
function getName() {
throw new Error('getName() was called!');
}
不会抛出错误。这是因为 null 运算符的左边操作数是 null,所以它返回其右边操作数。由于其右边操作数没有被执行,所以 getName() 函数也不会被调用,也就不会抛出错误。
如何使用 null 运算符
null 运算符可以用来简化代码、提高可读性,还可以让你的代码语义更加明确。
例如,以下代码:
if (name === null || name === undefined) {
name = 'John Doe';
}
可以简化为:
const name = null ?? 'John Doe';
这两种代码的作用都是一样的,但后一种代码更加简洁、可读,而且语义更加明确。
你还可以使用 null 运算符来避免使用三元运算符。例如,以下代码:
const result = age >= 18 ? 'adult' : 'minor';
可以简化为:
const result = age >= 18 ?? 'minor';
这两种代码的作用也是一样的,但后一种代码更加简洁、可读,而且语义更加明确。
注意:
- null 运算符只能用于赋值运算。
- null 运算符不能用于比较运算。
- null 运算符不能用于逻辑运算。