LinDaiDai/niubility-coding-js

🎁第7期第1题:几种字符串转为数字的方法,有什么区别?

Opened this issue · 0 comments

几种字符串转为数字的方法,有什么区别?

(题目来源:CavsZhouyou/Front-End-Interview-Notebook)

JS中将字符串转换为数字的方式有很多种,以下我列举了一些常用的,看看非纯数字来进行转换会发生什么:

let str = '33.3c'

console.log(Number(str));

console.log(parseInt(str));

console.log(parseFloat(str));

console.log(str++);

console.log(str>>>2);

大家可以先思考一下再来看结果。

let str = '33.3c'

console.log(Number(str)); // NaN

console.log(parseInt(str)); // 33

console.log(parseFloat(str)); // 33.3

console.log(str++); // NaN

console.log(str>>>2); // 0

嘻嘻😁,我们来简单分析一下:

  • Number()方法会对传入的值进行强转换为数字,如果传入的字符串包含了非数字的话则被转为NaN

  • parseInt()方法会将传入的值转为整数,若是碰到非数字部分则终止

    例如:

    console.log(parseInt("33c3.3c")); // 33
  • parseFloat()方法和parseInt()很像,不过它会保留小数,另外它在碰到非数字部分也会终止:

    console.log(parseFloat("33c3.3c")); // 33
  • ++这种方式的话就是就会有一个隐式转换的过程,将字符串转换为数字,类似于Number()

  • >>>无符号右移,>>是有符号右移,在这里呆呆认为str应该是会被先隐式转换为数字,然后再进行右移的,因为str被转为数字的结果是NaN,而NaN右移的结果是0

    str 转为数字是 NaN;
    
    NaN>>>2 的结果是 0;

如果对隐式类型转换还不熟悉的小伙伴可以看呆呆的这篇文章哟:[【精】从206个console.log()完全弄懂数据类型转换的前世今生(下)](