为什么+" 1"返回一个int?

时间:2015-03-13 17:22:22

标签: javascript

return "1";  // returns string
return +"1"; // returns int

我想知道在使用 +“ n 将字符串转换为int时调用此方法。

4 个答案:

答案 0 :(得分:5)

这只是一元+运算符根据语言规范执行的内在类型强制。

  1. expr 成为评估UnaryExpression的结果。
  2. 返回ToNumber(GetValue( expr ))。
  3. 因此,虽然从概念上来说它与一元-正好相反,因为+操作只是意味着“乘以正1”,唯一真正的工作就是将价值强加给一个数字。

答案 1 :(得分:4)

来自MDN

  

一元加(+)

     

一元加号运算符在其操作数之前,并计算其值   操作数但尝试将其转换为数字,如果它不是   已经。虽然一元否定( - )也可以转换非数字,   unary plus是转换内容的最快和首选方式   变成一个数字,因为它不执行任何其他操作   数。它可以转换整数和浮点数的字符串表示,   以及非字符串值true,false和null。整数   支持十进制和十六进制(" 0x" -prefixed)格式。   支持负数(但不支持十六进制)。如果不能   解析一个特定的值,它将评估为NaN。

     

示例:

+3     // 3
+"3"   // 3
+true  // 1
+false // 0
+null  // 0

答案 2 :(得分:1)

您正在使用一元运算符+,它尝试将任何内容转换为数字(作为浮点数)。

请注意,如果无法将其转换为数字,则可能会返回NaN

同样,您可以使用parseFloat,也可以返回NaN

parseFloat(anyValue, 10); 

答案 3 :(得分:0)

您正在应用一元运算符+

它没有为字符串定义,因此JS必须先将字符串转换为数字。

当然,请注意不要将其意外地转换为二元运算符。这不是你想在真实代码中使用的东西,因为它有点脆弱:)