taller react programacion orientada objetos funcional ejemplos ejemplo curso abismo javascript

javascript - react - programacion funcional vs orientada a objetos



¿Qué hace el "|"(single pipe) en JavaScript? (4)

console.log(0.5 | 0); // 0 console.log(-1 | 0); // -1 console.log(1 | 0); // 1

¿Por qué 0.5 | 0 0.5 | 0 devuelve cero, pero cualquier entero (incluido negativo) devuelve el entero de entrada? ¿Qué hace el tubo único ("|")?


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


Esto es un bitwise o .
Como las operaciones a nivel de bit solo tienen sentido en enteros, 0.5 se trunca.

0 | x 0 | x es x , para cualquier x .


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)

Las operaciones de bit a bit 6 y 10 le darán 14:

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

Terriblemente confuso!


Un solo tubo es un poco sabio O

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

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