两个不同的结果为“1”+“1”& “1” - - javascript中的“1”

时间:2017-12-15 16:11:08

标签: javascript

JavaScript强制,订单优先级和关联性可能令人困惑,但我使用下面的链接来理解它,

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

但我仍然没有得到导致"1"+"1"导致"11""1"- - "1"导致2的原因{/ 1}},

- -应该转换为+,它应该像"1"+"1"一样处理,我在这里缺少什么?

你可以在这里测试一下:

console.log("1" + "1");
console.log("1"- - "1");

2 个答案:

答案 0 :(得分:7)

两个-中的第二个-被解释为一元-。一元运算符具有更高的优先级,因此"1"- - "1""1" - (-"1")相同,后者与"1" - (-1)相同,并且由于-仅用于数字,因此上述操作变为{ {1}}评估为1 - (-1)

答案 1 :(得分:4)

“1”+“1”将被解释为字符串连接。在评估表达式时,+将执行连接,如果其中一个操作数的类型为string,则运算符-不是这样。

在javascript中

“1” - - “1”,运算符-尝试解析它拥有的操作数。如果它无法将它们解析为数字,它将返回NaN。因此“1” - - “1”“1” - (- “1”)类似。会发生什么是因为有运算符-将会有"1"到数字(第一个操作数)的解析以及第二个操作数(-"1")的解析也是数字。

实际上两个运营商都有一点不同:

  • "foo" + 1将返回foo1,因为+会进行连接

  • 而:"foo" - 1将返回NaN,因为第一个操作数无法解析为数字。同样的规则适用于运营商/*