如何:〜运算符?

muu*_*ess 20 javascript

我不能谷歌〜运算符来了解更多相关信息.有人可以用简单的语言向我解释它是什么以及如何使用它?

Dav*_*ang 23

这是一个按位NOT.

我见过的最常见的用途是双位NOT,用于删除数字的小数部分,例如:

var a = 1.2;
~~a; // 1
Run Code Online (Sandbox Code Playgroud)

为什么不用Math.floor?微不足道的原因是它更快并且使用更少的字节.更重要的原因取决于您希望如何对待负数.考虑:

var a = -1.2;
Math.floor(a); // -2
~~a; // -1
Run Code Online (Sandbox Code Playgroud)

因此,Math.floor用于四舍五入,~~用于切断 (不是技术术语).

  • 很明显,但对于任何有兴趣的人,(我认为)"切断"的技术术语将是"截断".不是为了这个目的而使用双位按钮可能比`Math.floor`更快并且使用更少的内存,但是结果数仍然会使用相同数量的内存,因为JavaScript没有区分数值的整数,浮点数等. (7认同)
  • 我更喜欢parseInt(a) (2认同)

Jus*_*tin 5

我见过的 ~(波形符)的一种用法是为 .indexOf() 获取布尔值。

你可以使用:if(~myArray.indexOf('abc')){ };

而不是这个:if(myArray.indexOf('abc') > -1){ };

JSFiddle 示例


附加信息:波浪号的伟大之谜(~)

允许特殊字符的搜索引擎:Symbol Hound