2009-10-13 12 views
54

Zastanawiam się, czy funkcja bez instrukcji return (lub bez naciśnięcia jakichkolwiek instrukcji return) zwraca wartość, która jest całkowicie równa wartości false?Co zwraca funkcja javascript w przypadku braku instrukcji return?

Na przykład:

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

Powinno to return false jeśli wykonywane w Firebug (ale niczego nie wrócić, jeśli tylko o nazwie foo();).

Wielkie dzięki!

Jason

+1

JavaScript także ma drugą wartość, która wskazuje brak wartości . Nieokreślona wartość reprezentuje głębszy rodzaj nieobecności. Jest to wartość zmiennych, które nie zostały zainicjowane oraz wartość, jaką uzyskasz, gdy zapytasz o wartość obiektu lub elementu tablicy, który nie istnieje. Nieokreślona wartość jest również zwracana przez funkcje, które nie mają wartości zwracanej, i wartości parametrów funkcji, dla których nie podano argumentu. undefined to predefiniowana zmienna globalna – Xsi

Odpowiedz

68

Funkcja bez instrukcji return (lub taki, który kończy się jego wykonanie nie uderzając jeden) powróci undefined.

Jeśli użyjesz operatora jednoargumentowej negacji dwa razy na wartości undefined, otrzymasz false.

Nic nie widać na konsoli, ponieważ Firebug nie wypisuje wyniku wyrażenia, gdy jest niezdefiniowany (po prostu spróbuj wpisać undefined; na konsoli, a nic nie zobaczysz).

Jeśli jednak wywołać funkcję console.log bezpośrednio, a będziesz mógł go zobaczyć:

function foo(){} 

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

Ta odpowiedź jest poprawna. Możesz testować javascript interaktywnie za pomocą konsoli firebug lub konsoli Safari. –

+7

Lub po prostu skopiuj poniższy tekst na pasek adresu: javascript: alert (function() {}()); – Marius

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

, aby dowiedzieć się, spróbuj w konsoli Firebug

alert((function(){})()); 
Powiązane problemy