¿Qué significa "|" (tubo único) ¿hacer en JavaScript?

Resuelto Matrym asked hace 13 años • 5 respuestas
console.log(0.5 | 0); // 0
console.log(-1 | 0);  // -1
console.log(1 | 0);   // 1

¿Por qué 0.5 | 0devuelve cero, pero cualquier número entero (incluido el negativo) devuelve el número entero de entrada? ¿Qué hace la tubería única ("|")?

Matrym avatar Jun 01 '11 07:06 Matrym
Aceptado

Esto es bit a bit o .
Dado que las operaciones bit a bit sólo tienen sentido en números enteros, 0.5se trunca.

x | 0es x, si xes un número entero.

SLaks avatar Jun 01 '2011 00:06 SLaks

La comparación de bits es tan simple que es casi incomprensible ;) Mira este "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)

Bit a bit ORing 6 y 10 le dará 14:

   alert(6 | 10); // should show 14

¡Terriblemente confuso!

Trey avatar Jun 01 '2011 00:06 Trey

Una sola tubería es un OR bit a bit .

Realiza la operación OR en cada par de bits. a O b produce 1 si a o b son 1.

JavaScript trunca cualquier número que no sea entero en operaciones bit a bit, por lo que se calcula como 0|0, que es 0.

Yahel avatar Jun 01 '2011 00:06 Yahel

Este ejemplo te ayudará.

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

Nikhil Mahirrao avatar Apr 24 '2018 08:04 Nikhil Mahirrao