总结:js世界中的特殊符号
发布于 4 年前 作者 shixinglong007 4099 次浏览 来自 分享

常用符号:+ ++ - -- || / /' && 等

这些基本上每天都能用到,但是 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

以上是我的个人见解,如果有错误请指出 你还知道哪些特殊符号,欢迎补充 my_wechart.jpg share.jpg

作者:石兴龙 来源:GitHub 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

6 回复

~~ 浮点数取整 这个忘记哪儿看的,好像不安全。

@waitingsong 应该是只支持32位的数字

@alsotang 你好,我专门翻了一下 《javascript 权威指南》,第34页,标题为 3.1 数字。其中有一段:“Javascript 中的所有数字,均用浮点数表示。Javascript 采用 IEEE 745 标准 定义的64位浮点格式表示数字”

按位取反感觉以前主要是用在以前没有 Array.includes 的时候拿来判断数组里存不存在某个值,类似于 if(~a.indexOf(b)),实际上仅当 b 不在 a 内的时候这个条件不满足 ~(-1) === 0,这样符合代码阅读的自然逻辑

@shixinglong007

所有的按位操作符的操作数都会被转成补码(two’s complement)形式的有符号32位整数

from https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators

@alsotang [赞]学到了,按位操作符 还有 &, | ,^, <<, >>, >>>

回到顶部