2009-10-13 14 views
54

Sadece merak ettim, dönüş ifadesi olmayan (veya herhangi bir geri dönüş bildirimi vermeden) bir işlev, false'ye tamamen eşdeğer bir değer döndürüyor mu? Örneğinjavascript işlevi bir dönüş ifadesi olmadan ne döndürür?

: (ama eğer ben sadece denilen foo() bir şey döndürmez;) kundakçı idam eğer

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

Bu yanlış dönmelidir.

Çok teşekkürler!

Jason

+1

JavaScript da değerinin olmadığını belirten ikinci bir değere sahiptir. Tanımlanmamış değer daha derin bir yokluğun temsilidir. başlatılmamış değişkenler ve var olmayan bir nesne özellik veya dizi öğesinin değerini sorguladığınızda elde ettiğiniz değerdir. Tanımsız değeri, dönüş değeri olmayan, ve sağlanan bağımsız değişkenler olan işlev parametrelerinin değeri olan işlevler tarafından da döndürülür. undefined, önceden tanımlanmış bir global değişkendir – Xsi

cevap

68

(birini vurmadan, yürütme biter veya bir) iade deyimi olmayan bir fonksiyon undefined dönecektir.

Ve bir undefined değerinde iki kez negatif işlecini kullanırsanız, false alırsınız.

Konsolda hiçbir şey görmüyorsunuz, çünkü Firebug tanımsız olduğunda bir ifadenin sonucunu yazdırmıyor (yalnızca konsolda undefined; yazmayı deneyin ve hiçbir şey görmeyeceksiniz).

Ancak doğrudan console.log işlevini çağırın ve bunu görmek mümkün olacak eğer:

function foo(){} 

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

Bu cevap doğrudur. Javascript'i, firebug konsolunuzu veya safari konsolunuzu kullanarak etkileşimli olarak test edebilirsiniz. –

+7

Veya aşağıdakileri adres çubuğuna kopyalamanız yeterlidir: javascript: alert (işlev() {}()); – Marius

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

öğrenmek için firebug konsolda bu deneyin:

alert((function(){})()); 
İlgili konular