0“的意思是在JavaScript中
这个问题在这里已经有了答案:
value | 0
value | 0
表示“将value
转换为整数”
|
是按位或运算符。
为了工作,首先将两侧的值转换为带符号的32位整数,然后对值进行按位或运算。 由于按位与0
不会产生任何效果,因此只能转换为整数。
Math.floor
不同之处在于它向零转换
| Math.floor | Math.ceil | Math.trunc | | 0 |
----------+------------+-----------+------------+------+
2.5 | 2 | 3 | 2 | 2 |
----------+------------+-----------+------------+------+
1.5 | 1 | 2 | 1 | 1 |
----------+------------+-----------+------------+------+
0.5 | 0 | 1 | 0 | 0 |
----------+------------+-----------+------------+------+
-0.5 | -1 | 0 | 0 | 0 |
----------+------------+-----------+------------+------+
-1.5 | -2 | -1 | -1 | -1 |
----------+------------+-----------+------------+------+
-2.5 | -3 | -2 | -2 | -2 |
----------+------------+-----------+------------+------+
Infinity | Infinity | Infinity | Infinity | 0 |
----------+------------+-----------+------------+------+
NaN | NaN | NaN | NaN | 0 |
----------+------------+-----------+------------+------+
2**32+5 | 4294967301 |4294967301 | 4294967301 | 5 |
----------+------------+-----------+------------+------+
最后一个, 2*32+5
是一个不适合32位的值,指出您需要知道何时| 0
| 0
是合适的,当它不是。
| 0
| 0
也比Math.floor
或Math.ceil
快得多。 可能有很多原因,它更快,最明显的是它是一个操作符,而不是Math对象上的一个函数,它可以被替换,因此必须在每次使用时进行检查。
它的优先级非常低,这意味着您通常可以将它粘贴到没有括号的表达式的末尾
integerResult = someValue / someOtherValue | 0;
链接地址: http://www.djcxy.com/p/77445.html