fe-interview icon indicating copy to clipboard operation
fe-interview copied to clipboard

[js] 第310天 说下js的parseInt()和Number()有什么区别?

Open haizhilin2013 opened this issue 5 years ago • 5 comments

第310天 说下js的parseInt()和Number()有什么区别?

我也要出题

haizhilin2013 avatar Feb 19 '20 20:02 haizhilin2013

// 当字符串是由数字组成的时候 他们转换的数字一样的没有差别  
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

sz-p avatar Feb 20 '20 01:02 sz-p

  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是将对象转化为数值型数据和隐式转化为数字一样

longhui520 avatar Feb 20 '20 12:02 longhui520

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);

carrie-xin avatar Feb 25 '20 09:02 carrie-xin

ParseInt(string,radix):将给定字符串以指定基数解析成整数,第二个参数为几进制,parseInt从头解析string为整数,在遇到不能解析的字符时就返回已经解析的整数部分,如果第一个字符就不能解析,就直接返回NaN Number():执行类型转换,若无法转换为数字,则返回NaN

d4c-27 avatar Apr 13 '22 03:04 d4c-27

parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数,radix 是 2-36 之间的整数,表示被解析字符串的基数, parseInt函数将其第一个参数转换为一个字符串,对该字符串进行解析,然后返回一个整数或 NaN。 Number 对象主要用于:

如果参数无法被转换为数字,则返回 NaN。 在非构造器上下文中 (如:没有 new 操作符),Number 能被用来执行类型转换。

xiaoqiangz avatar Sep 08 '22 09:09 xiaoqiangz