console.log(0.5 | 0); // 0
console.log(-1 | 0); // -1
console.log(1 | 0); // 1
Why does 0.5 | 0
return zero, but any integer (including negative) returns the input integer? What does the single pipe (\"|\") do?
console.log(0.5 | 0); // 0
console.log(-1 | 0); // -1
console.log(1 | 0); // 1
Why does 0.5 | 0
return zero, but any integer (including negative) returns the input integer? What does the single pipe (\"|\") do?
This is a bitwise or.
Since bitwise operations only make sense on integers, 0.5
is truncated.
0 | x
is x
, for any x
.
Bit comparison is so simple it\'s almost incomprehensible ;) Check out this \"nybble\"
8 4 2 1
-------
0 1 1 0 = 6 (4 + 2)
1 0 1 0 = 10 (8 + 2)
=======
1 1 1 0 = 14 (8 + 4 + 2)
Bitwise ORing 6 and 10 will give you 14:
alert(6 | 10); // should show 14
Terribly confusing!
A single pipe is a bit-wise OR.
Performs the OR operation on each pair of bits. a OR b yields 1 if either a or b is 1.
JavaScript truncates any non-integer numbers in bitwise operations, so its computed as 0|0
, which is 0.
This example will help you.
var testPipe = function(input) {
console.log(\'input => \' + input);
console.log(\'single pipe | => \' + (input | \'fallback\'));
console.log(\'double pipe || => \' + (input || \'fallback\'));
console.log(\'-------------------------\');
};
testPipe();
testPipe(\'something\');
testPipe(50);
testPipe(0);
testPipe(-1);
testPipe(true);
testPipe(false);