ES9 中的运算符优先级

在 JavaScript 中,运算符优先级会影响表达式的计算顺序。ES9 的更新中,增加了一些新的运算符,这些新运算符也有不同的优先级,深入了解它们的优先级可以避免一些常见的错误。

1. ES9 中新增的运算符

1.1 空值合并运算符(nullish coalescing operator)

空值合并运算符用于判断一个值是否为 null 或 undefined,如果是则返回默认值。其语法是 ??。

--- --- - ---- -- ----------
----------------- -- -------

在上面的代码中,空值合并运算符判断变量 foo 是否为 null 或 undefined,由于 foo 的值为 null,因此返回了默认值 'default'。

1.2 可选链运算符(optional chaining operator)

可选链运算符可以简化深层次的属性或方法访问。其语法是 ?.。

--- --- - -
  ----- -
    -------- -------
  -
--

--- --- - ------------------
----------------- -- -----

在上面的代码中,可选链运算符判断 obj.prop 是否存在,如果存在,则访问其中的属性 subprop,否则返回 undefined。

1.3 不严格相等运算符(loose equality operator)

不严格相等运算符用于判断两个值是否相等,但不会考虑它们的数据类型。其运算符是 ==。

------------- -- ---- -- ----

在上面的代码中,不严格相等运算符判断数字 0 和空字符串 '' 是否相等,由于在做比较时会自动转换类型,因此返回了 true。

2. 运算符优先级

在 JavaScript 中,每个运算符都有一个优先级,表示它们在表达式中的计算顺序。一些常用运算符的优先级从高到低依次是:

  1. 小括号 ()
  2. new、delete、typeof 等操作符
  3. 算术运算符 +、-、*、/ 等
  4. 关系运算符 >、<、>=、<= 等
  5. 相等性运算符 ==、!=、===、!== 等
  6. 逻辑运算符 &&、|| 等
  7. 赋值运算符 =、+=、-=、*=、/= 等

根据运算符优先级,有时候需要使用小括号来明确计算的顺序:

--- --- - -- - -- - --
----------------- -- -

在上面的代码中,小括号可以明确告诉 JavaScript 先计算加法运算,再计算乘法运算。

3. 指导意义

  • 在使用新的运算符时,需要了解它们的优先级,尤其是和其他运算符的优先级的比较。避免由于错误的优先级导致的计算错误。
  • 在表达式中使用小括号可以使计算顺序更加明确,而且能够减少出错的概率。

结论

在 JavaScript 的 ES9 中,新增了一些运算符,包括空值合并运算符、可选链运算符和不严格相等运算符。了解它们和其他运算符的优先级可以让代码更加清晰和准确。建议在表达式中使用小括号来避免优先级错误的出现。

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