如何在JavaScript中将字符串"01"转换为数字?

ha_*_*ryu 4 javascript

我想知道如果数字小于10,是否可以在JavaScript中使用2位数字?

例如

10,9,8,7,6等以10,09,08,07,06为"数字数据类型"

是的,当数字小于10时,可以以2位数字显示数字作为"字符串数据类型".

if(number < 10) {
    console.log(number) //number
    number = "0" + number;
    console.log(number) //string
}
Run Code Online (Sandbox Code Playgroud)

但我想用它作为数字数据类型,所以我可以使用

if(number == 01) {
    //some code here
}
Run Code Online (Sandbox Code Playgroud)

可能吗?

Kau*_*hik 7

ParseInt语法

参考

parseInt(string,radix);

参数

string 要解析的值.如果string不是字符串,则将其转换为字符串(使用ToString抽象操作).字符串中的前导空格将被忽略.

radix 2到36之间的整数,表示上述字符串的基数(数学数字系统中的基数).为人类常用的十进制数字系统指定10.始终指定此参数以消除读者混淆并保证可预测的行为.当未指定基数时,不同的实现会产生不同的结果,通常将值默认为10.

不要做

var number = "09";
if(number == 09) { // here it will not compare the type check the == and ===
    alert("OK: " + number)
} else {
    alert("PROBLEM: " + number);
}
Run Code Online (Sandbox Code Playgroud)

正确答案

var number = "09";
var decimal = parseInt(number,10);
if(decimal === 09) {
    alert("OK: " + decimal)
} else {
    alert("PROBLEM: " + decimal);
}
Run Code Online (Sandbox Code Playgroud)

在控制台中检查一下

var first = 10 ;
var secn = "10";

first == secn // true because both are equal. 
first === secn // both are not equal by type(string and number)



var result = parseInt("010", 10) == 10; // Returns true

var result = parseInt("010") == 10; // Returns false
Run Code Online (Sandbox Code Playgroud)


Gav*_*iel 1

它与 parseInt 一起使用。默认情况下它的基数为 10。所以即使 09 也可以,但正如 @deceze 指出的那样,最好明确使用基数 10:

var number = "09";
var decimal = parseInt(number, 10);
if(decimal == 09) {
    alert("OK: " + decimal)
} else {
    alert("PROBLEM: " + decimal);
}
Run Code Online (Sandbox Code Playgroud)

  • 请务必注意,您在这里使用*八进制表示法*以及这对您的程序逻辑可能意味着什么! (2认同)
  • 旧版 IE 中的 parseInt("09") 由于被解释为八进制,因此无法正确解析。此后,这种情况在现代浏览器中发生了变化,但这并不是一个适用于所有情况的解决方案。您需要使用 parseInt("09", 10) 代替。 (2认同)