2009-10-13 8 views
54

Ich habe mich nur gefragt, gibt eine Funktion ohne eine return-Anweisung (oder ohne eine Return-Anweisung zu treffen) einen Wert zurück, der völlig falsch ist?Was gibt die JavaScript-Funktion zurück, wenn keine Rückgabeanweisung vorliegt?

Zum Beispiel:

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

Dies sollte falsch zurück, wenn in Firebug ausgeführt (aber nichts zurückgibt, wenn ich gerade genannt foo();).

Vielen Dank!

Jason

+1

JavaScript auch hat einen zweiten Wert, der angibt, dass nicht vorhanden ist. Der undefinierte Wert repräsentiert eine tiefere Art von Abwesenheit. Es ist der Wert der Variablen, die nicht initialisiert wurden und der Wert, den Sie erhalten, wenn Sie den Wert eines Objekts Eigenschaft oder Array-Element abfragen, die nicht vorhanden ist. Der undefinierte Wert wird auch von Funktionen zurückgegeben, die keinen Rückgabewert haben, und den Wert von Funktionsparametern, für die kein Argument angegeben ist. undefined ist eine vordefinierte globale Variable – Xsi

Antwort

68

Eine Funktion ohne return-Anweisung (oder eine, die seine Ausführung endet ohne eine Kollision) wird undefined zurück. Wenn Sie den unären Negationsoperator zweimal unter undefined verwenden, erhalten Sie false.

Sie sehen nichts auf der Konsole, da Firebug das Ergebnis eines Ausdrucks nicht ausgibt, wenn es nicht definiert ist (geben Sie einfach undefined; an der Konsole ein und Sie werden nichts sehen).

jedoch, wenn Sie die console.log Funktion direkt aufrufen, und Sie werden in der Lage sein, es zu sehen:

function foo(){} 

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

Diese Antwort ist korrekt. Sie können Javascript interaktiv mit Ihrer Firebug-Konsole oder Safari-Konsole testen. –

+7

Oder kopiere einfach folgendes in die Adresszeile: javascript: alert (function() {}()); – Marius

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

, um herauszufinden, versuchen Sie dies in Firebug Konsole:

alert((function(){})()); 
Verwandte Themen