203 Stimmen

Was macht das "|" (Senkrechter Strich) in JavaScript?

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 ("|")?

197voto

SLaks Punkte 832502

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.

167voto

Trey Punkte 5463

Bit-Vergleich ist so einfach, dass es fast unverständlich ist ;) Schau dir 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)

Das bitweise ODER von 6 und 10 ergibt 14:

   alert(6 | 10); // sollte 14 anzeigen

Schrecklich verwirrend!

22voto

Yahel Punkte 36453

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.

16voto

Nikhil Mahirrao Punkte 3153

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);

0voto

pradip garala Punkte 391

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.com

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.

Powered by:

X