🎁第7期第1题:几种字符串转为数字的方法,有什么区别?
Opened this issue · 0 comments
LinDaiDai commented
几种字符串转为数字的方法,有什么区别?
(题目来源: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()完全弄懂数据类型转换的前世今生(下)](