console.log(0.5 | 0); // 0
console.log(-1 | 0); // -1
console.log(1 | 0); // 1
Warum wird 0.5 | 0Null zurückgegeben, aber jede Ganzzahl (einschließlich Negativ) gibt die Eingabe-Ganzzahl zurück? Was macht das Einzelrohr ("|")?
console.log(0.5 | 0); // 0
console.log(-1 | 0); // -1
console.log(1 | 0); // 1
Warum wird 0.5 | 0Null zurückgegeben, aber jede Ganzzahl (einschließlich Negativ) gibt die Eingabe-Ganzzahl zurück? Was macht das Einzelrohr ("|")?
Antworten:
Dies ist ein bisschen oder .
Da bitweise Operationen nur für ganze Zahlen sinnvoll sind, 0.5wird sie abgeschnitten.
0 | xist xfür jeden x.
parseInt()
Der Bitvergleich ist so einfach, dass er fast unverständlich ist;) Schauen Sie sich dieses "Nybble" an
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)
Durch bitweises ODER 6 und 10 erhalten Sie 14:
alert(6 | 10); // should show 14
Schrecklich verwirrend!
alert(true | false) //yields 1; alert(true | true) //yields 1; alert(false | true) //yields 1; alert(false | false) //yields 0
Ein einzelnes Rohr ist ein bitweises ODER .
Führt die ODER-Verknüpfung für jedes Bitpaar aus. a ODER b ergibt 1, wenn entweder a oder b 1 ist.
JavaScript schneidet alle nicht ganzzahligen Zahlen in bitweisen Operationen ab, daher wird es als 0|00 berechnet .
Dieses Beispiel wird Ihnen helfen.
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);