1. 字符串转数值
1.1 转换方法
1.1.1 parseInt()、parseFloat()
一个转整数,一个转浮点。
parseInt(string, radix)
string是要被解析的值。
radix是介于2和36之间的整数,表示上述字符串的基数(进制)。当未指定基数时,不同的实现会产生不同的结果,通常将值默认为10。
【返回值】 返回解析后的整数值。
- 如果被解析参数的第一个字符无法被转化成数值类型,则返回 NaN。
- 反之,解析按从左到右的顺序,如果遇到非数字字符就停止。
parseInt(18,10) //18 10表示使用我们通常使用的十进制数值系统
parseInt(18) //18
如果参数不是一个字符串,则将其转换为字符串(使用 toString)(这也是为什么string输入的是数字如18,也能正确解析的原因)。字符串首尾的空白符将会被忽略。
parseInt(' 18',10) //18
parseInt('x123ddw') //NaN
parseInt('123ddw11.2') //123
1.1.2 Number()
运算判断时的转化规则
- 如果为纯数字的字符串,则直接将其转换为数字(字符串首尾的空格将被忽略)
- 如果字符串中有非数字的内容,则转换为
NaN(not a number) - 如果字符串是空串或全是空格的字符串,则Number('')或Number(" ")--->
0
1.2 方法对比
Number()的转换要比parseInt()更严格。
1.2.1 共同点
字符串首尾的空格都将被忽略。 Number()中字符串中间若出现空格,将被视为非数字字符处理,返回值为NaN。
1.2.2 不同点
Number()中字符串中间若出现非数字字符,则返回NaN;
parseInt()中字符串中间若出现非数字字符,解析按从左到右的顺序,如果遇到非数字字符就停止,返回前面解析到的内容。
2. Undefined 类型的值转换为 NaN
3. Null 类型的值转换为 0
4. Boolean 类型的值,true 转换为 1,false 转换为 0
5. Symbol 类型的值不能转换为数字,会报错
6. 对象类型
- 如果对象具有
valueOf()方法,后者返回一个原始值,则JavaScript将这个原始值转换为数字(如果需要的话)并返回一个数字。 - 否则,如果对象具有
toString()方法,后者返回一个原始值,则JavaScript将其转换并返回。(对象的toString()方法返回一个字符串直接量(原始值),JavaScript将这个字符串转换为数字类型,并返回这个数字)。 - 否则,JavaScript抛出一个类型错误异常。