1、使用内置函数 parseInt() 将字符串转换为整型。该函数的第二个参数表示字符串所表示数字的基(进制):
parseInt("123", 10); // 123
parseInt("010", 10); //10如果调用时没有提供第二个参数(字符串所表示数字的基),2013 年以前的 JavaScript 实现会返回一个意外的结果:
parseInt("010"); // 8 (2013之前的)
parseInt("0x10"); // 16parseInt("010"); // 10 (现在的默认十进制)
这是因为字符串以数字 0 开头,parseInt
() 函数会把这样的字符串视作八进制数字;同理,0x开头的字符串则视为十六进制数字。
如果想把一个二进制数字字符串转换成整数值,只要把第二个参数设置为 2 就可以了:
parseInt("11", 2); // 32、内置函数 parseFloat()
,用以解析浮点数字符串,与parseInt()不同的地方是,parseFloat()只应用于解析十进制数字。
单元运算符 + 也可以把数字字符串转换成数值:
+ "42"; // 42+ "010"; // 10+ "0x10"; // 16
如果给定的字符串不存在数值形式,函数会返回一个特殊的值 NaN
(Not a Number 的缩写):
parseInt("hello", 10); // NaN
要小心NaN:如果把
NaN
作为参数进行任何数学运算,结果也会是NaN
:NaN + 5; //NaN
可以使用内置函数 isNaN() 来判断一个变量是否为
NaN
:isNaN(NaN); // true
JavaScript 还有两个特殊值:
(正无穷)和
Infinity
-Infinity
(负无穷):1 / 0; // Infinity-1 / 0; // -Infinity
可以使用内置函数 isFinity()来判断一个变量是否是一个有穷数, 如果类型为
Infinity
,-Infinity
或NaN则返回false
:备注: parseInt() 和 parseFloat()isFinite(1/0); // false isFinite(Infinity); // false isFinite(NaN); // false isFinite(-Infinity); // false isFinite(0); // true isFinite(2e64); // true isFinite("0"); // true,如果是纯数值类型的检测,则返回false:Number.isFinite("0");
函数会尝试逐个解析字符串中的字符,直到遇上一个无法被解析成数字的字符,然后返回该字符前所有
数字字符组成的数字。使用运算符 "+" 将字符串转换成数字,只要字符串中含有无法被解析成数字的字符,该字符串都将被转换成NaN
。
parseInt("11.1as"); // 11
+ "11.1ss" ; //NaN