【问题标题】:Why does 1+ +"2"+3 evaluate to 6 in JavaScript? [duplicate]为什么 1+ +"2"+3 在 JavaScript 中计算为 6? [复制]
【发布时间】:2019-02-18 22:05:18
【问题描述】:

谁能告诉我 JavaScript 中的 1+ +"2"+3 表达式为什么以及如何导致 6 并且这也是一个数字?我不明白如何在两个 + 运算符之间引入一个空格将字符串转换为数字。

【问题讨论】:

  • 结果不是 5,而是 6。请参阅 MDN 上的 Unary +
  • 那是5,我得到了6!顺便说一句,+ 会将字符串评估为Number

标签: javascript


【解决方案1】:

使用 +"2" 将字符串值 ("2") 转换为一个数字,因此表达式计算为 6,因为它本质上计算为 1 + (+"2") + 3,而 1 + 2 + 3 又计算为 1 + 2 + 3

console.log(1 + +"2" + 3);
console.log(typeof "2");
console.log(typeof(+"2"));

如果不将两个 + 符号隔开,它们将被解析为 ++(增量值)运算符。

【讨论】:

    【解决方案2】:

    很简单,先将字符串+“2”转换为数字(根据运算符优先级),然后将这些都相加。

    对于运算符优先级mozilla developer link

    【讨论】:

      【解决方案3】:
       1+ +"2"+3 results 6
       1+"2"+3 results "123"
      AS The unary + operator converts its operand to Number type.
      

      【讨论】:

        【解决方案4】:

        +"2" 是一种将字符串"2" 转换为数字2 的方法。剩下的只是一个简单的加法。

        两个+ 运算符之间需要空格以避免与(前/后)增量运算符++ 混淆。

        请注意,转换是在加法之前完成的,因为一元运算符+ 的优先级高于加法运算符。见此表:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table

        【讨论】:

          猜你喜欢
          • 2014-07-25
          • 2011-04-24
          • 1970-01-01
          • 2011-12-04
          • 2015-07-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-16
          相关资源
          最近更新 更多