为什么要写这篇文章
最近在阅读《javascript高级程序设计》(第6版)这本书,以写代记。同时刚刚入职新公司,发现自己对于number类型转换的细节掌握不足
使用场景
我们常常对于很多字符串类型的数字需要转换成Number
,一般使用Number()
,就可以实现,但是Number()
有一些弊端,比如使用Number()
一旦含有非数字类型就会返回NaN
,比如Number(’123b’)—>NaN
,其实很有可能我们的目的是筛选出字符串中的数值,然而他却返回了NaN
,导致条件无法满足,程序无法执行。所以根据不同的场景和目的,会使用不同的数值转换函数:
Number(string)
:适用于只包含数字的转换parseInt(string, radix)
:适用于整数,进制数值转换,含num+非num的转换parseFloat(string)
:适用于浮点数的转换
注意: 这里的parseInt(
)和parseFloat()
,与Number.parseInt()
,Number.parseFloat()
相同
思维导图
个人习惯,每次记录一些东西喜欢先用思维导图,一个是简单直观,还有一个是缕清思路,见者不喜勿怪哈
Number(string)
区别于New Number()
new Number()
表示Number实例,Number()
表示Number函数
- 简单判断:开头是否存在
new
,有new
—实例,无new
—函数 - 深度判断:使用关键字来判断,比如
typeof
、instanceof
,具体可以参考判断js数据类型