¿Cómo se trata undefined en Binary en javascript? Lanza un error cuando lo hago (undefined).toString(2) .
Pero cuando lo hago
undefined & 0 //returns 0 undefined & 1 //returns 0 undefined | 0 //returns 0 undefined | 1 //returns 1 Uno podría suponer que undefined podría convertirse en 0 . ¿O hay alguna otra cosa en marcha?
Mas o menos. Cuando se utilizan operadores bit a bit (y otros operadores que solo tienen sentido en términos matemáticos, como - y * y ** , etc.), ambas expresiones se conviertenprimero en números .
4. Let lnum be ? ToNumeric(lval). 5. Let rnum be ? ToNumeric(rval). Y ToNumeric hace ToNumber que tiene
Argument Type Result Undefined Return NaN. Y luego los operadores binarios llaman a ToInt32 en cada operador, que tiene
- Si el número es NaN, +0𝔽, -0𝔽, +∞𝔽 o -∞𝔽, devuelve +0𝔽.
Entonces, se convierten efectivamente en NaN en preparación para la operación matemática, y luego NaN se convierte en 0 para la operación binaria.
(undefined).toString(2) no funciona porque el acceso a una propiedad (como toString ) de una expresión solo funciona si la expresión es un objeto o una primitiva que se puede envolver en un objeto. Undefined y null no son objetos, ni se pueden convertir en uno, por lo que intentar acceder a cualquier propiedad de ellos arroja.