Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript | 0做什么_Javascript - Fatal编程技术网

Javascript | 0做什么

Javascript | 0做什么,javascript,Javascript,当你打开你的控制台,输入任何点数,例如5.123,然后在后面加上| 0,它将四舍五入为5 不知何故,如果你把它改为| 2,它会记下7 var test1 = 5.123 | 0 ; // will be 5 var test2 = 5.123 | 2 ; // will be 7 var test3 = 5.123 | 4 ; // will be 5 again 有人能给我解释一下上面发生了什么,我能用这个代替parseInt吗?这是一个位运算符。。。引用这句话: 按位运算符将其操作数视为3

当你打开你的控制台,输入任何点数,例如5.123,然后在后面加上| 0,它将四舍五入为5

不知何故,如果你把它改为| 2,它会记下7

var test1 = 5.123 | 0 ; // will be 5
var test2 = 5.123 | 2 ; // will be 7
var test3 = 5.123 | 4 ; // will be 5 again

有人能给我解释一下上面发生了什么,我能用这个代替parseInt吗?

这是一个位运算符。。。引用这句话:

按位运算符将其操作数视为32位(0和1)的序列,而不是十进制、十六进制或八进制数。例如,十进制数字9的二进制表示为1001。按位运算符对这种二进制表示执行操作,但返回标准JavaScript数值

发生的情况是,运算符将数字视为32位整数;so 5.123被视为:

 0000 0000 0000 0000 0000 0000 0000 0101
(小数部分被抛出),0被视为

 0000 0000 0000 0000 0000 0000 0000 0000
然后OR函数比较这两个数字,如果其中一个数字有1,则写入1。 因此,将按位Or与十进制数和zeeo一起使用本质上是一种丢弃十进制部分并保留整数部分的方法

另一个例子是:

 0000 0000 0000 0000 0000 0000 0000 0101 (5)
 0000 0000 0000 0000 0000 0000 0000 0010 (2)
 --------------------------------------- ORed
 0000 0000 0000 0000 0000 0000 0000 0111 (7)
示例4:

 0000 0000 0000 0000 0000 0000 0000 0101 (5)
 0000 0000 0000 0000 0000 0000 0000 0100 (4)
 --------------------------------------- ORed
 0000 0000 0000 0000 0000 0000 0000 0101 (5)
您可以使用它来转换以丢弃数字的小数部分-请参见

它是位运算符请参见