在JavaScript中,有3个公共函数可以非数值转化为数字类型,分别是:Number()、parseInt()和parseFloat()。其中第一个函数Number()方法可以把在JavaScript中的任何数据类型转化成Number数字类型,而另外两个函数则是专门的把字符串转换成数值。不过这个三个函数分别有着各自的作用,即使同样的输入也会得到不同的结果。
Number()函数的转化规则如下:
1.如果只是单纯的数字类型,那么最后的结果也是返回原数字,只是简单的传入和返回。
2.如果是undefined类型传入,则返回NaN。
3.如果是null值,则返回数字0。
4.如果传入的Boolean值,那么如果是true则返回1,如果是false则返回0。
5.如果是传入的是字符串数据类型,则又遵守以下规则:
1.说如果字符串中只包含了数字,即使携带正号或负号,那么会将其转化成十进制数值,例如字符串“2”则转化成数字2,“213”则转化成数字213,如果前方带0则会忽略0,例如:“0123”,则转化成数字123。
2.如果字符串包含了有效的十六进制格式的内容,例如“0xa”,则将其转化为相同大小的十进制整数值,例如:
3.如果传入为空字符串(双引号或者单引号,中间不包含任何内容),则转化为数字0。
4.如果传入的字符串为浮点格式数字,例如“1.2”,那么将其转化为对应的数字浮点数值(同样,也会忽略前导零)。
5.除以上四点的内容之外的字符,都讲其转化为NaN。
6. 如果传入的内容为对象的话,则优先调用对象的valueOf()方法,然后依照上述规则转化成返回的值。如果转化的结果为NaN的话,那么则调用对象的toString()方法,在依次按照前面的规则转换并且返回字符串值。
虽然上述规则看似复杂,但是实际操作时Number()方法是特别实用的,例如:
我们可以看到字符串“Leo”因为其中不包含任何有意义的数字值会被转化为NaN。空字符串会转化成数字0。字符串“000123”被转化成数字123。布尔值则会根据规则转化成0或1。而十六进制也会转化为十进制。
本文原创,未经作者允许不可转载!
更多内容,欢迎关注作者微信公众号:李游Leo老师前端讲堂!
暂无评论
违反法律法规
侵犯个人权益
有害网站环境