新功能试用 ——null 判断语法 && 和??在 ES11 中的使用

阅读时长 4 分钟读完

背景

在以往的 JS 中,我们经常需要用到判断 undefinednull 是否存在,并进行条件分支的编写。此时我们需要用到 if (value === null || value === undefined) 这样的语句,来判定变量的存在与否。然而这种写法非常的繁琐,并且容易出现错误。在 ES11 中,我们可以使用新的 null 判断语法,极大的简化了我们的开发过程。

null 判断语法 && 和 ??

在 ES11 中,我们新增了两个运算符,分别是 &&??。这两个运算符可以大大简化判断 nullundefined 的语句。

&& 运算符

&& 运算符在之前的 JS 中已经存在,它用于表示逻辑与。但是在 ES11 中,我们对其进行了一些改造,使其可以用于简单的 null 判断。

在这里,如果 variable 为 null 或者 undefined,则 variable.property 不会被执行,并且整个表达式的结果会返回 null。如果 variable 的属性 property 为一个函数时,则这个函数在变量存在的情况下才会被执行。

?? 运算符

同样的,?? 运算符也是一个新增的运算符。它的作用是,当左侧空值时,返回右侧的值。否则,返回左侧的值。这个运算符可以被用于替换一些繁琐的 null 判断语句。

在这里,如果 variable 为 null 或者 undefined,则整个表达式的结果会返回 defaultValue。否则,返回 variable。这个运算符很适合用于设置默认值或者处理可选参数。

示例代码

&& 运算符

在这个例子中,由于 user 为 null,所以 name 的值会被直接赋值为 null。

在这个例子中,由于 user 不为 null,所以 name 的值会被赋值为 user.name,也就是 'John'。

在这个例子中,由于 user 为 null,所以整个表达式返回 null。因此不会执行 getName() 方法。

?? 运算符

由于 user 为 null,所以 name 的值会被赋值为 defaultValue,也就是 'hello world'。

由于 user.name 存在,所以 name 的值会被赋值为 user.name,也就是 'John'。

使用建议

虽然这两个运算符简化了我们的代码,但是它们也有一些可能影响代码可读性的缺点。

  1. 当代码片段非常复杂时,使用这两个运算符可能会导致代码难以理解。

  2. 当代码片段存在多个嵌套的 null 判断时,将会需要更多的关注和思考。

因此,在日常开发中,我们应该谨慎选择这两个运算符的使用场景。在一些简单的 null 判断中,它们可以大大提高我们的开发效率和代码可读性。

总结

在 ES11 中,我们引入了 &&?? 这两个运算符,它们能够大大简化我们的 null 判断语句。这两个运算符的使用,可以大大提升我们的代码质量和开发效率。但是在日常开发中,我们也应该注意代码的可读性和复杂度,并且谨慎选择使用这些运算符的场景。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6594a3d3eb4cecbf2d8f3e01

纠错
反馈