编程语言
首页 > 编程语言> > JavaScript中类型转换Number()和前置 + 操作符之间的关系

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()规范

通过在控制台重写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