Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
LinDaiDai opened this issue Jul 8, 2020 · 0 comments

Comments

@LinDaiDai
Copy link
Owner

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

(题目来源: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()完全弄懂数据类型转换的前世今生(下)](

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant