5

Jaka jest logika operatorów bitowych na undefined ???JavaScript bitowe niezdefiniowane pułapki?

var x; 
console.log(x);  // undefined 
console.log(x^7); // 7 
console.log(7^x); // 7 
console.log(x|7); // 7 
console.log(7|x); // 7 
console.log(7&x); // 0 
console.log(x&7); // 0 
console.log(~x); // -1 
console.log(x*2); // NaN 
console.log(x/2); // NaN 
console.log(x+2); // NaN 
console.log(x-2); // NaN 

Widzę sens w NaN. Ponieważ undefined -2 ​​naprawdę nie jest liczbą. Ale nie podążam za żadną logiką operatorów bitowych i nieokreśloną.

+2

operacje na bitach sens tylko na liczby całkowite, więc argumenty są automatycznie zmuszani do tego typu. – Barmar

+0

Tak, spodziewałem się, że spowoduje błąd lub coś znaczącego. Ten cichy przymus dokonał nieskończonej pętli w moim kodzie. – CoR

Odpowiedz

6

Funkcja wewnętrzna [ToInt32] nazywa na wszystkich argumentów za wszystkich operatorów bitowe.

Zauważ, że ToInt32(undefined) -> 0 i zakres jest [0, 2^32)

Powiązane problemy