JavaScript中类型转换Number()和前置 + 操作符之间的关系
作者:互联网
js中string转换成number常用的方法有以下几种
- 前置 + 操作符 // +"123" === 123
- Number() // Number("123") === 123
- parseInt() // parseInt("123") === 123
- parseFloat() // parseFloat("123") === 123
拿我来说,在日常开发过程中如果需要string转换成number的场景,多半是为了适配接口中返回的数据。
所以parseInt和parseFloat这两中方法基本上排除,因为这两个函数会将"123a"转换成123,并不是太符合我们的预期,前两种则会将"123a"转换NaN。
本文主要讲一下Number()和前置 + 操作符之间的关系。
通过查阅了一些文章,发现很多人都提到了ECMAScript规范。
通过查阅ECMAScript规范,发现这两者都会调用一个 toNumber() 的抽象方法进行转换。因此可以认为前置 + 操作符等价于 Number()。
感兴趣的可以看一下
通过在控制台重写Number之后也可以发现,两者之间并没有什么关系。
最后也发现很多人提到了https://jsperf.com基准测试网站,有人通过基准测试得出加运算是 Number 函数的 8 倍多,我这边打开这个网站显示报错了,没办法验证,各位看官如果有其它测试效率的网站,可以推荐一下。
参考文章:
https://www.zhihu.com/question/54853362/answer/141409955
https://blog.fundebug.com/2018/07/07/string-to-number/
标签:类型转换,parseFloat,前置,string,JavaScript,Number,123,操作符 来源: https://blog.csdn.net/qq_36647492/article/details/114121059