Javascript双重否定运算的具体使用
作者:Mr.怪兽
本文介绍了JavaScript中的双位NOT运算符,将非数字类型转换为0,以及整数参数和Array.prototype.indexOf方法中的应用,感兴趣的可以了解一下
双位 NOT(~~)
按位运算符 ~~ 表示否定:
~~something;
按位NOT运算符(~)将获取其操作数,将其转换为 32 位整数,并将反转每个位,例如:
00000000000000000000000000001001 ...becomes 11111111111111111111111111110110
如果操作数是一个数字,并且它不是 NaN 或者 Infinity
那么~~具有将其四舍五入为零的效果(Math.ceil表示负数,Math.floor表示正数)。如果它不是数字,那么内部函数会将其转换为零。
以下是双位 NOT 操作的一些示例:
~~null; // => 0 ~~undefined; // => 0 ~~0; // => 0 ~~{}; // => 0 ~~[]; // => 0 ~~(1/0); // => 0 ~~false; // => 0 ~~true; // => 1 ~~1.2543; // => 1 ~~4.9; // => 4 ~~(-2.999); // => -2
~~的地板功能(flooring )使其成为更好的选择,如果您知道自己正在处理正数——它速度更快,占用的字符更少。虽然它的可读性不太好,但我希望它能慢慢成为 JS 领域非常知名的技术,这样我们都可以使用它而不必担心受到指责。Math.floor
~~
这对于规范化您期望为整数的参数非常有用。以 MDC 建议提供给不支持的浏览器为例:
/*Array.prototype.indexOf = function...*/ var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); /* 在去:~~ */ /*Array.prototype.indexOf = function...*/ var from = ~~arguments[1];
到此这篇关于Javascript双重否定运算的具体使用的文章就介绍到这了,更多相关Javascript双重否定运算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!