愈之 博客


A breath of fresh air


Javascript各种一元操作符的妙用

写JS的代码经常会遇到字符或者数字处理的情况,经常有人想对变量做加法运算结果不小心成了字符串拼接,包括我也犯过这种错误。JS的类型自动检测机制很方便,凡事都有两方面,带来便利的同时也要求JS程序猿们在处理一些特殊情况下需要掌握一些技巧。

因为常常要做类型转换和取整的操作,我以下整理了几种最方便的途径和高效的写法。

都知道减号(-)的作用是负数

1
2
3
4
x = -'3';
>-3
typeof x
>'number'

那么+是什么作用,变成正数? 但没这个必要 因为

1
2
-x
>3

那么在javascript中+号到底是什么作用? 可以把加号当作类型转换符使用 举个栗子:)

1
2
3
4
5
6
7
8
9
n = +'3'
>3
n+3
>6
typeof n
>'number'
+‘abc’
>NaN

所以, 一元操作符+起了一个strtoint的作用

还有其他的操作符也能起到这个作用 比如

1
2
3
4
5
'3'|0
>3
~~'3'
>3

这些操作的效率上来说~~和|最快一些,比最慢的+快了18%

001h59wagy6Gu8QoaBc2a_690_jpeg

上图就是效率测试的结果,单位是每秒的运算次数。有趣的是低版本的chrome比高版本的快了不止一点点,不知道为什么


另外有个可以分享的

|,~~可以用作浮点数取整

1
2
3
4
5
~~'23.3'
>23
'-23.3'|0
>-23

比parseInt快不少哦

:>