2009-10-13 7 views
54

Je me demandais juste, est-ce qu'une fonction sans une déclaration de retour (ou sans frapper aucune déclaration de retour) renvoie une valeur qui est complètement équivalente à faux?Que retourne la fonction javascript en l'absence d'une déclaration de retour?

Par exemple:

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

Cela devrait retourner false si elle est exécutée dans Firebug (mais ne retourne rien si je viens d'appeler foo();).

Merci beaucoup!

Jason

+1

JavaScript aussi a une seconde valeur qui indique l'absence de valeur . La valeur indéfinie représente un type d'absence plus profond. C'est la valeur des variables qui n'ont pas été initialisées et la valeur obtenue lorsque vous interrogez la valeur d'un objet propriété ou élément de tableau qui n'existe pas. La valeur non définie est également renvoyée par des fonctions qui n'ont pas de valeur de retour, et la valeur des paramètres de fonction pour lesquels aucun argument n'est fourni. undefined est une variable globale prédéfinie – Xsi

Répondre

68

Une fonction sans instruction de retour (ou celui qui met fin à son exécution sans frapper un) retournera undefined. Si vous utilisez l'opérateur de négation unaire deux fois sur une valeur undefined, vous obtiendrez false.

Vous ne voyez rien sur la console car Firebug n'imprime pas le résultat d'une expression lorsqu'elle n'est pas définie (essayez de taper undefined; sur la console, et vous ne verrez rien).

Toutefois, si vous appelez la directement fonction console.log, et vous pourrez voir:

function foo(){} 

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

Cette réponse est correcte. Vous pouvez tester javascript interactivement en utilisant votre console firebug ou votre console safari. –

+7

Ou simplement copier ce qui suit dans la barre d'adresse: javascript: alert (function() {}()); – Marius

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

pour découvrir, essayer dans la console Firebug:

alert((function(){})()); 
Questions connexes