了解 ES12 非空操作符的使用

在前端开发中,我们经常会遇到变量为空的情况,如果不加以判断,就会出现一些无法预料的错误。为了解决这个问题,ES12 引入了非空操作符,可以帮助我们更加方便地处理这种情况。

什么是非空操作符

非空操作符 ?? 是 ES12 新增的一个操作符,它用于判断一个变量是否为 nullundefined,如果是则返回一个默认值。它的语法如下:

上面的代码表示,如果变量 a 不为 nullundefined,则返回 a 的值,否则返回 b 的值。

非空操作符的优点

使用非空操作符的好处在于可以减少代码中的冗余判断,提高代码的可读性和健壮性。比如下面的代码:

let name;
if (user && user.name) {
  name = user.name;
} else {
  name = 'Unknown';
}

可以使用非空操作符进行简化:

const name = user?.name ?? 'Unknown';

这样就不需要手动判断 useruser.name 是否为空了,代码更加简洁易读。

非空操作符的使用注意事项

需要注意的是,非空操作符只能用于判断 nullundefined,对于其他 falsy 值(如 0''false 等),非空操作符并不会返回默认值。比如下面的代码:

const a = 0;
const b = a ?? 1;
console.log(b); // 0

上面的代码中,变量 a 的值为 0,但是使用非空操作符判断时并不会返回默认值 1

另外,非空操作符的优先级较低,需要注意与其他操作符的结合使用。比如下面的代码:

const a = null;
const b = a || 'default';
const c = a ?? 'default';
console.log(b); // 'default'
console.log(c); // 'default'

上面的代码中,变量 b 使用了逻辑或操作符,而变量 c 使用了非空操作符。由于逻辑或操作符的优先级高于非空操作符,所以变量 b 的值为 'default',而变量 c 的值为 'default',这点需要注意。

非空操作符的兼容性问题

由于非空操作符是 ES12 新增的语法,所以在一些老版本的浏览器中可能会出现兼容性问题。不过,我们可以使用 Babel 等工具将代码转换为 ES5 或 ES6 的语法,以解决这个问题。

总结

非空操作符是一种方便的语法,可以帮助我们更加方便地处理变量为空的情况,减少代码中的冗余判断,提高代码的可读性和健壮性。同时,需要注意非空操作符只能用于判断 nullundefined,对于其他 falsy 值并不会返回默认值。在使用时,还需要注意与其他操作符的结合使用,以及兼容性问题。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658e2287eb4cecbf2d3f386d


纠错
反馈