Number(mix)
1.如果是布尔型,true -> 1,false -> 0;
2.如果是数字,返回本身
3.如果是null,返回0
4.如果是undefined,返回NaN
5.如果是字符字符串遵循以下规则:
1.如果字符串只包含数字,则转化为十进制
2.如果是有效的浮点数格式,则转化为浮点数
3.空字符串转化为0
4.以上之外的返回NaN
6.如果是对象,先调用valueOf(),如果为NaN,在调用toString()
console.log(Number(false)); // 0
console.log(Number('')); // 0
console.log(Number('012.5')); // 12.5
console.log(Number([])); //0
var a = {
'valueOf': function(){ return '123' }
}
console.log(a);
console.log(Number(a)); // 123
7.如果参数是 Date 对象,Number() 返回从 1970 年 1 月 1 日至今的毫秒数。
parseInt(string,radix)
1.radix在2~36之间,如果为0或没有,默认为10进制
2.第一个参数只接受字符串,其余返回NaN
3.从左至右尽可能转化为数字
parseInt(false) // NaN
parseInt('40a') // 40
parseInt('0x10') //16
parseInt('010') // 10或8 不确定
parseInt('11',2) // 3
parseInt(10) // 10
parseFloat(string)
1.非字符串返回NaN
2.从左至右,如果第一个不能解析为数字,则返回NaN,否则转化到最后一个数字
3. .1 -> 0.1
parseFloat('.1') // 0.1
parseFloat('40.9a') // 40.9