console.log(0.5 | 0); // 0
console.log(-1 | 0); // -1
console.log(1 | 0); // 1
Warum gibt 0.5 | 0
null zurück, aber jede ganze Zahl (einschließlich negativer) gibt die Eingabezahl zurück? Was macht der einzelne senkrechte Strich ("|")?
console.log(0.5 | 0); // 0
console.log(-1 | 0); // -1
console.log(1 | 0); // 1
Warum gibt 0.5 | 0
null zurück, aber jede ganze Zahl (einschließlich negativer) gibt die Eingabezahl zurück? Was macht der einzelne senkrechte Strich ("|")?
Dies ist ein bitweises Oder.
Da bitweise Operationen nur auf Ganzzahlen sinnvoll sind, wird 0.5
abgeschnitten.
x | 0
ist x
, wenn x
eine Ganzzahl ist.
Ein einzelner senkrechter Strich ist ein bitweises ODER.
Führt die ODER-Operation für jedes Paar von Bits durch. a ODER b ergibt 1, wenn entweder a oder b 1 ist.
JavaScript kürzt alle nicht ganzzahligen Zahlen bei bitweisen Operationen ab, daher wird es als 0|0
berechnet, was 0 ist.
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('etwas');
testPipe(50);
testPipe(0);
testPipe(-1);
testPipe(true);
testPipe(false);
Dies ist ein Bitweise OR (|).
Die Operanden werden in 32-Bit-Integer umgewandelt und durch eine Folge von Bits (Nullen und Einsen) ausgedrückt. Zahlen mit mehr als 32 Bits verlieren ihre signifikantesten Bits.
Also wird in unserem Fall die Dezimalzahl in die Ganzzahl 0 konvertiert.
= 0.5 | 0
= 0 | 0
= 0
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.