console.log(0.5 | 0); // 0
console.log(-1 | 0); // -1
console.log(1 | 0); // 1
Dlaczego 0.5 | 0
zwraca zero, ale każda liczba całkowita (w tym ujemna) zwraca wejściową liczbę całkowitą? Co robi pojedyncza kreska („|”)?
javascript
Matrym
źródło
źródło
Odpowiedzi:
To jest bitowe lub .
Ponieważ operacje bitowe mają sens tylko na liczbach całkowitych,
0.5
jest obcięty.0 | x
jestx
dla każdegox
.źródło
parseInt()
Porównanie bitów jest tak proste, że prawie niezrozumiałe;) Sprawdź to "nybble"
Bitowe ORing 6 i 10 daje 14:
Strasznie zagmatwane!
źródło
alert(true | false) //yields 1; alert(true | true) //yields 1; alert(false | true) //yields 1; alert(false | false) //yields 0
Pojedyncza rura jest bitowym OR .
JavaScript obcina wszystkie liczby nie będące liczbami całkowitymi w operacjach bitowych, więc jest obliczany jako
0|0
, czyli 0.źródło
Ten przykład ci pomoże.
źródło