Ver Mensaje Individual
  #9 (permalink)  
Antiguo 07/12/2010, 20:20
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No entiendo esta sintaxis

depende el contexto. false es un boolean mientras que null es un tipo de objeto (si, aunque no lo creas, ver al final). al javascript ser un lenguaje sin declaracion de tipo de variable, los tipos de datos estan sujeto a coercion, o lo mismo que conversion de tipos. esto sucede cuando una instruccion (statement) requiere que el valor sea de un tipo especifico o cuando una expresion tiene que evaluar diferentes tipos de operandos. en este caso particular donde null es la condicion del operador ternario, el operador requiere un boolean, y por tanto null es convertido a false. pero eso no significa que null en si sea false, porque de lo contrario false tambien podria ser null, cosa que no sucede.


"ver para creer"
¿les suena la expresión? null significa nulo, que no tiene valor pese a que es un objeto. curiosamente, null produce un resultado distinto a los objetos cuando se realiza una conversion. eso es porque null es un tipo de objeto especial.
Código:
alert(typeof null); // 'object' ;
alert(Boolean(null)); // false ;
alert(Number(null)); // 0 ;
alert(String(null)); 'null' ;

alert(typeof {}); // 'object' ;
alert(Boolean({})); // true ;
alert(Number({})); // NaN ;
alert(String({})); // '[object Object]' ;
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 07/12/2010 a las 20:27