如何使用+作为投射机制?

时间:2013-10-10 13:10:24

标签: javascript string casting type-conversion typeof

我已经看过使用plus运算符将字符串转换为数字的代码。

这看起来像是:

var x ="5",y;
y = +x;
console.log(typeof y) //number

这是如何运作的?

2 个答案:

答案 0 :(得分:3)

事实上,有两个+运算符:二元+运算符和这一个:一元+运算符

了解它的描述in the MDN

  
      
  • (Unary Plus)
  •   
     

一元加号运算符位于其操作数之前,计算结果   操作数但尝试将其转换为数字,如果不是   已经。例如,y = + x取x的值并将其赋值给   Ÿ;也就是说,如果x为3,y将得到值3,x将保留   价值3;但如果x是字符串“3”,y也会获得该值   虽然一元否定( - )也可以转换非数字,但是一元加号是将某些东西转换成数字的最快和最优选的方式。   数字,因为它不执行任何其他操作   数。它可以转换整数和浮点数的字符串表示,   以及非字符串值true,false和null。整数   支持十进制和十六进制(“0x” - 前缀)格式。   支持负数(但不支持十六进制)。如果不能   解析一个特定的值,它将评估为NaN。

答案 1 :(得分:0)

var x = "5",
    y;

您声明了两个分别名为xy的变量。前者设置为保存字符串"5",后者保存undefined值(因为它已声明但未定义)。 然后,您将y设置为Number字符串"5"的转换(通过一元运算符+),即5。因此,typeof ynumber

+运算符是unary operator。它会计算一个试图将其转换为数字的对象。