fe-interview
fe-interview copied to clipboard
[js] 第310天 说下js的parseInt()和Number()有什么区别?
// 当字符串是由数字组成的时候 他们转换的数字一样的没有差别
let numStr = '123'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //123
// 当字符串是由字母组成的时候
let numStr = 'abc'
console.log(parseInt(numStr)) //NaN
console.log(Number(numStr)) //NaN
// 当字符串是由数字和字母组成的时候
let numStr = '123a'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //NaN
// 当字符串是由0和数字
let numStr = '0123'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //123
// **当字符串包含小数点**
let numStr = '123.456'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //123.456
// **当字符串为null时**
let numStr = null
console.log(parseInt(numStr)) //NaN
console.log(Number(numStr)) //0
// **当字符串为''(空)时**
let numStr = ''
console.log(parseInt(numStr)) //NaN
console.log(Number(numStr)) //0
1. parsetInt 返回整数或者NaN,Number返回数字(整数和小数)或者NaN
2. parsetInt(string,radix) string是数字或者字符串,radix为2~32为转化后的的基数,当为undefined或者0时取默认值为10,不在2\~32将返回NaN
3. parsetInt 的string以其它字符结尾时,例如parseInt('11s')得到11
4. Number的参数为object,不是obejct的将包装成object,但是转化'11s'将得到NaN,Number([])===0 ;Number(false)===1
5.总结就是parseInt更像正则转化,尽可能的将字符串转为整数,Number是将对象转化为数值型数据和隐式转化为数字一样
1.入参不同; parseInt(val, radix); // val为string类型(非字符串自动调用toString方法转化),radix(2~32)进制; Number(val); // val为number类型(非number类型自动转化成number,不能转的返回NaN);
2.返回结果不同; parseInt() 返回整数或NaN; Number() 返回整数或小数或NaN; eg:
Number(2.5); // 2.5
parseInt(2.5); // 2
Number('true'); // 1
parseInt('true'); // NaN
3.函数类型不同;
parseInt()是JavaScript的全局函数;
Number()是基本包装类型Number的构造函数,可以和new操作符一起使用创建变量,而parseInt()不行;
var num = new Number(5);
ParseInt(string,radix):将给定字符串以指定基数解析成整数,第二个参数为几进制,parseInt从头解析string为整数,在遇到不能解析的字符时就返回已经解析的整数部分,如果第一个字符就不能解析,就直接返回NaN Number():执行类型转换,若无法转换为数字,则返回NaN