title: Javascript专栏(二)_类型转换-未完
categories: JavaScript
date: 2022-03-20 10:08:32
tags:
let a = '1'
console.log(typeof a); //string
let b = a * 1
console.log(typeof b); //number
String -> Number
parseInt(string,radix)
该函数解析一个字符串并返回指定基数的十进制整数
console.log(parse('123',5))// 将'123'看作5进制数,返回十进制数38 => 1*5^2 + 2*5^1 + 3*5^0 = 38
参数
string 必需
radix 可选,表示以几进制来读取字符串,取值范围是2-36。请注意radix的默认值并不是10,并且在使用parseInt()函数时请一定要传入radix参数。在后文中“一些注意的点”中将会解释为什么我们必须这么做。
返回值
解析后的十进制数
或者NaN
console.log(parseInt('321',2))//NaN 因为第一个非空格字符3不可能出现在二进制中,所以无法解析,因此返回NaN
console.log(parseInt('321',37));//NaN 因为radix此时值为37,不在取值范围2-36之间
一些注意的点
截断解析
console.log(parseInt('1100211', 2)); //12 s
console.log(parseInt('1100', 2)); //12
// 2不是二进制中会出现的数,所以parseInt解析到这里时将会忽略该字符以及其后续的所有字符,也就是说第一行的‘211’都被忽略了,所以会和第二行输出相同的结果
请一定指定radix
当radix是undefined、0、或者压根没有的时候,js会假定以下情况。
如果string以0x(x无论大小写)开头,那么radix会假定为16。
如果string以0开头,那么radix会假定为8/10。。ES5澄清了会假定为10,但是!并不是所有浏览器都支持。因此,在使用parseInt时,一定要指定一个radix
parseFloat()
该函数解析一个字符串并返回一个浮点数
截断解析
console.log(parseFloat('+3.2+4'));//3.2
console.log(parseFloat('-3.2.4'));//-3.2 第二个小数点后面的都会被截止
+
console.log(+'42'); //42
console.log(+'a'); //NaN
console.log(+'00100'); //100
console.log(+'0x10'); //16