console.log(0.5 | 0); // 0
console.log(-1 | 0); // -1
console.log(1 | 0); // 1
왜 0.5 | 0
0을 반환하지만 어떤 정수 (음수 포함)가 입력 정수를 반환합니까? 단일 파이프 ( “|”)는 무엇을합니까?
답변
이것은 비트 단위 또는 입니다.
비트 단위 연산은 정수에만 의미 0.5
가 있으므로 잘립니다.
0 | x
이다 x
어떤을 위해, x
.
답변
비트 비교는 너무나 간단하여 거의 이해할 수 없습니다.)
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)
비트 OR 6 및 10은 14를 제공합니다.
alert(6 | 10); // should show 14
몹시 혼란스러운!
답변
단일 파이프는 비트 단위 OR 입니다.
각 비트 쌍에 대해 OR 연산을 수행합니다. a 또는 b가 1 인 경우 a OR b는 1입니다.
JavaScript는 비트 단위 연산에서 정수가 아닌 숫자를 자르므로 0|0
0 으로 계산됩니다 .
답변
이 예제가 도움이 될 것입니다.
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);