2010-11-19 26 views

cevap

11

Bu, işlevinizin tanımlanıp tanımlanmadığını kontrol eder.

if (typeof functionName === 'function') { 
    alert('loaded'); 
} 

See it.

+0

gerek yok. Aslında, '===' == 'dan biraz daha yavaş bir karşılaştırma. –

+0

@Marcel Korpel Bu durumu yerine getirip getirmediklerini görmek için türlerini zorlamadığı için genellikle daha hızlı olduğunu düşündüm. Oh, her gün yeni bir şeyler öğren. BTW, bunun üzerinde daha fazla okuma ya da ölçüt var mı? – alex

+3

@Marcel Korpel Hayır, '===' gerçekten * olduğunu * ** hızlı ** var çünkü * tipi dönüşüm için hiçbir * havai. Ayrıca '===' kullanmak için sadece iyi bir uygulama. Düğümümü hızlı bir şekilde kontrol etseniz bile, buradaki kanıt, '== 'bir Sayı ve bir String söz konusu olduğunda yaklaşık 10 kat daha yavaştır. eklemek için –

1

Açıkça bir işlev onu çağırmadan önce olduğunu kontrol edebilir.

if (typeof(functionName) == "function") 
    functionName(); 
+4

'functionName' etrafında parantezlere gerek yoktur; 'typeof' bir işleç değil, bir işlevdir. –

1

loaded ile ne demek istiyorsunuz? Genelde

siz onları aramadan önce tüm komut yüklenmiş emin olmak için onload olay gibi bir şey kullanmalıdır. Eğer sadece bir işlev olarak ilan edilip istiyor ya da olmasın typeof operatörünü kullanabilirsiniz: `===` `olarak typeof` hep bir dize döndürür için

// Check the type of "myRandomFunction" 
// Note: typeof is the only way you can use undeclared variables without raising an exception 
if (typeof myRandomFunction === 'function') { 
    myRandomFunction() 
} 
+0

yardım için teşekkürler. – Thomas

İlgili konular