在JavaScript中键入Boolean转换为Number

时间:2016-05-20 10:54:15

标签: javascript

我正在努力将布尔值的类型转换为javascript中的Number。

console.log(new Number(true));//Prints 1
console.log(+true);//Prints 1
console.log(parseInt(true));//Prints NaN

为什么parseInt会抛出NaN?虽然上面给出的第一和第二个案例工作正常。

3 个答案:

答案 0 :(得分:4)

因为parseInt需要字符串而'true'NaN

来自MDN:

  

parseInt()

     

parseInt()函数解析字符串参数并返回指定基数的整数(数学系统中的基数)。

答案 1 :(得分:2)

如果您实际上正在进行数字转换,那么此表可能非常有用:

enter image description here

答案 2 :(得分:2)

Number构造函数在内部调用toNumber,根据spec

  

布尔值 - 如果参数为true,则返回1。如果参数是,则返回+0   假的。

这意味着Number(true)会返回1.

,parseInt在内部调用toString并按spec

调用
  

<强>布尔
  如果参数为true,则返回&#34; true&#34;。

     

如果参数为false,则返回&#34; false&#34;。

这意味着parseInt(true) - &gt; parseInt("true") - &gt; NaN

因为再次按spec

  
      
  1. 如果数字是NaN,+ 0,-0,+∞或-∞,则返回+0。
  2.   

希望这会有所帮助。