在 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 中,每个运算符都有一个优先级,表示它们在表达式中的计算顺序。一些常用运算符的优先级从高到低依次是:
- 小括号 ()
- new、delete、typeof 等操作符
- 算术运算符 +、-、*、/ 等
- 关系运算符 >、<、>=、<= 等
- 相等性运算符 ==、!=、===、!== 等
- 逻辑运算符 &&、|| 等
- 赋值运算符 =、+=、-=、*=、/= 等
根据运算符优先级,有时候需要使用小括号来明确计算的顺序:
--- --- - -- - -- - -- ----------------- -- -
在上面的代码中,小括号可以明确告诉 JavaScript 先计算加法运算,再计算乘法运算。
3. 指导意义
- 在使用新的运算符时,需要了解它们的优先级,尤其是和其他运算符的优先级的比较。避免由于错误的优先级导致的计算错误。
- 在表达式中使用小括号可以使计算顺序更加明确,而且能够减少出错的概率。
结论
在 JavaScript 的 ES9 中,新增了一些运算符,包括空值合并运算符、可选链运算符和不严格相等运算符。了解它们和其他运算符的优先级可以让代码更加清晰和准确。建议在表达式中使用小括号来避免优先级错误的出现。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6732c4f80bc820c5823ec2bb