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

Created on 19 Feb 2020  ·  3Comments  ·  Source: haizlin/fe-interview

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

我也要出题

js

Most helpful comment

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

All 3 comments

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

```html

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

Was this page helpful?
0 / 5 - 0 ratings