5

Qual è la logica degli operatori bit a bit su undefined ???Insidie ​​indefinite bitwise JavaScript?

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 

Posso vedere un senso in NaN. Perché undefined -2 ​​è in realtà 'non un numero'. Ma non seguo alcuna logica sugli operatori bit a bit e indefinito.

+2

Operazioni di bit senso solo su interi, quindi gli argomenti vengono automaticamente costretto a quel tipo. – Barmar

+0

Sì, mi aspettavo che avrebbe generato un errore o qualcosa di significativo. Quella coercizione silenziosa ha fatto il ciclo infinito nel mio codice. – CoR

risposta

6

La funzione interna [ToInt32] è invitata tutti operandi per tutti operatori bit per bit.

noti che ToInt32(undefined) -> 0 e l'intervallo è [0, 2^32)