首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript中混合运算符的优先顺序

javascript中混合运算符的优先顺序
EN

Stack Overflow用户
提问于 2018-04-27 22:23:55
回答 1查看 78关注 0票数 0

如果在同一表达式中使用不同类型的运算符,而不使用括号,那么优先级是什么?

例如,考虑以下示例。为什么它必须来自left-to-right,而不是right-to-left,具有诸如typeof运算符具有right-to-left优先顺序和+具有left-to-right优先等事实。

代码语言:javascript
复制
typeof 99 + 'foo' // 'numberfoo'
typeof (99 + 'foo') // 'string'

为什么typeof 99 + 'foo'的输出必须是'numberfoo‘而不是'string’?

任何对文档的引用都会很有帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-04-27 22:37:00

JavaScript中的大多数非赋值表达式(与许多其他语言和数学中的表达式一样)是从左到右计算的,但是表达式中使用的运算符类型可能会改变这一默认行为。

在此示例中要理解的关键一点是, 是JavaScript keyword,,而不是,因此它在操作顺序中占有一席之地。

在第一个示例中:typeof 99 + 'foo'

表达式以typeof 99开头(从左到右)。typeof是从右向左关联的,所以99转到typeof,结果是"number"

然后,使用+ 'foo' (从左到右)继续进行评估。数字是从左到右关联的,因此“+”和"foo“相互连接,并输出"numberfoo"

在第二个示例中,您引入了分组操作符(),该操作符更改了操作的正常顺序,并首先对组中的表达式求值。在这种情况下,您有一个number和一个string,它们之间有+运算符。只要有+运算符,并且其中一个操作数是string,另一个操作数就会自动转换为string,因此结果是typeof string,它会生成string

以下是操作的一般顺序:

  1. Parenthesis
  2. Exponenents
  3. Multiplication
  4. Division
  5. Addition (字符串或numeric)
  6. Subtraction

有关详细信息,请参见,其中包括一个关联性表格,该表格显示了哪些操作符具有哪些关联性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50064491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档