2012-06-14 9 views

Respuesta

7

De acuerdo con la ES5 spec, al hacer bitwise operations, todos los operandos se convierten a ToInt32 (que primero llama ToNumber. Si el valor es NaN o Infinity, se convierte en 0).

Así: NaN^1 =>0 XOR 1 =>1

+1

Los especificación ..... 1 y pensé que es 'función de bit a bit (obj) { si (typeof o == "Número"!) Return 1; } ' – gdoron

+0

@gdoron: Tengo que amar la especificación :-P –

+1

Si me dan su representante, lo haré. ':)' Solo vale mencionar que el resultado depende del segundo operando. Ejemplo: '" A "^ 2 === 2 // true' – gdoron

2

ECMA-262 define en 11,10 que los argumentos de operadores de bits binarios son convertidos con ToInt32. Y 9.5 que explica ToInt32 dice en sus dos primeros puntos:

  1. número Dejar ser el resultado de llamar ToNumber en el argumento de entrada.
  2. Si el número es NaN, +0, -0, + Inf o -Inf, devuelve +0.
Cuestiones relacionadas