2009-10-13 7 views
54

Me preguntaba, ¿una función sin declaración de devolución (o sin ingresar ninguna instrucción de devolución) devuelve un valor que es completamente equivalente a falso?¿Qué devuelve la función javascript en ausencia de una declaración de devolución?

Por ejemplo:

function foo(){}; 
!!foo(); 

Esto debería devolver false si se ejecuta en Firebug (pero no devuelve nada si acabo de llamar a foo();).

¡Muchas gracias!

Jason

+1

JavaScript también tiene un segundo valor que indica la ausencia del valor . El valor indefinido representa un tipo más profundo de ausencia. Es el valor de las variables que no se han inicializado y el valor que obtiene cuando consulta el valor de un objeto propiedad o elemento de matriz que no existe. El valor indefinido también es devuelto por funciones que no tienen valor de retorno, y el valor de los parámetros de función para el que no se proporciona ningún argumento . undefined es una variable global predefinida – Xsi

Respuesta

68

Una función sin una declaración de retorno (o uno que termina su ejecución sin golpear uno) volverá undefined.

Y si utiliza el operador de negación unaria dos veces en un valor de undefined, obtendrá false.

No está viendo nada en la consola porque Firebug no imprime el resultado de una expresión cuando no está definida (simplemente intente escribir undefined; en la consola y no verá nada).

Sin embargo, si se llama a la función console.log directamente, y usted será capaz de verlo:

function foo(){} 

console.log(foo()); // will show 'undefined' 
+0

Esta respuesta es correcta. Puede probar JavaScript interactivamente usando su consola Firebug o la consola safari. –

+7

O simplemente copie lo siguiente en la barra de direcciones: javascript: alert (function() {}()); – Marius

3
<html> 
<body> 
<script> 
function a() {} 
alert(a()); 
</script> 
</body> 
</html> 
1

para descubrir, probar esto en la consola de Firebug:

alert((function(){})()); 
Cuestiones relacionadas