常用符号:+ ++ - -- || / /' && 等
这些基本上每天都能用到,但是 js 世界中有些特殊符号是不常用的,我也是偶然在阅读大神代码的时候发现的,一番查找之后得出了以下结论
特殊符号 | 意义 |
---|---|
~ | 按位取反 |
~~ | 浮点数取整 |
!! | 变量转换为 bollean 类型 |
~按位取反
其实不太常用
1在计算机中的值:0000001
取反后:11111110(这是一个负数,反码=补码+1)
补码:11111101(那么补码=反码-1)
原码:10000010(十进制为-2)
例:
- ~5 === -6
- ~6 === -7
~~ 浮点数取整
浮点数取整只是他的作用,但原理依然来自 按位取反
例:
- ~~1.23 === 1
- ~~(0.1 + 0.2) === 0
!! 变量转换为 bollean 类型
!是取反,!! 就是取正。
例:
- !!1 === true
- !!‘abc’ === true
- !!{name: ‘test’} === true
以上是我的个人见解,如果有错误请指出 你还知道哪些特殊符号,欢迎补充
~~ 浮点数取整 这个忘记哪儿看的,好像不安全。
@waitingsong 应该是只支持32位的数字
@alsotang 你好,我专门翻了一下 《javascript 权威指南》,第34页,标题为 3.1 数字。其中有一段:“Javascript 中的所有数字,均用浮点数表示。Javascript 采用 IEEE 745 标准 定义的64位浮点格式表示数字”
按位取反感觉以前主要是用在以前没有 Array.includes
的时候拿来判断数组里存不存在某个值,类似于 if(~a.indexOf(b))
,实际上仅当 b 不在 a 内的时候这个条件不满足 ~(-1) === 0
,这样符合代码阅读的自然逻辑
所有的按位操作符的操作数都会被转成补码(two’s complement)形式的有符号32位整数
from https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators
@alsotang [赞]学到了,按位操作符 还有 &, | ,^, <<, >>, >>>