Basit, (function() {...})();
?Neden bazı js dosyaları ile başlarım (function() {
cevap
(function() { /* code here */ })()
formunun kodu "Hemen Başlatılan İşlev İfadesi" olarak bilinir. Sıklıkla bir kapanma kurmak için kullanılır, böylece global kapsamı kirletmeden değişkenleri tanımlayabilirsiniz. Bunu, Ember, jQuery'de ve hemen hemen her "plug-in" içinde bulabilirsiniz. Genel kapsamı kirletmek genellikle kötü bir fikirdir, ancak tüm sitelerde çalışması gereken eklentilerle, sitenin yaratıcısının kullandığı bir değişkenin yanlışlıkla üzerine yazılmamasını sağlamak özellikle önemlidir.
Elbette, başka kullanımlar da var. Örneğin, şöyle "çapa" bir yineleme değişkeni, için kullanılabilir:
for(i=0; i<links.length; i++) {
(function(i) {
links[i].onclick = function() {alert(i);};
})(i);
}
// without the IIFE, all links would alert the value of links.length instead.
Bazen IIFEs kullanan bazı durumlar da vardır ki insanların çoğu olur böyle bir "tam olarak muhtemelen linç bana, -zaman" hesaplama:
if((function() {
var party=document.getElementById('party').children, l=party.length, i, r=0;
for(i=0; i<l; i++) if(party[i].children.length > 0) r++;
return r;
})() == 6) {
// your Party is full
}
yukarıda if
deyimi atlayarak önce hesaplanmış olsaydı çok daha iyi olurdu, bu yüzden ... Ben bu sefer yaptığım gibi yapmayın!
sözdizimi
(function(){
/* code */
}());
ile başladı ile böyle Ember veya jquery.js gibi bazı js dosyaları() başlamak yapmak neden . kodun hemen son satırında hemen sonra çalıştırır anonim fonksiyonunu diğer fonksiyonların değişkenlerini kapsam için kullanılır çağrılan olarak bilir fazlası için
. http://en.wikipedia.org/wiki/Immediately-invoked_function_expression
- 1. js: Bazı özel jQuery kullanımı
- 2. Neden alternatif gereksinimler kullanın: define (function (required) {...}
- 3. Weinre açamıyor .js dosyaları
- 4. zc.buildout ve Distribute ile nasıl başlarım?
- 5. $ (function() her zaman neden uygulandı?
- 6. .jsm vs .js dosyaları
- 7. neden bu şekilde "this.foo = new (function() {..})();" vs. "this.foo = function() {...};"
- 8. Neden C dosyaları/* [] */
- 9. JS ve CSS dosyaları, VM
- 10. Clojure web uygulaması - nereden başlarım?
- 11. Gulp-inject aşağıdaki gibi, benim endekste bazı dosyaları enjekte çalışıyorum
- 12. gettext kullanarak çevirme .js dosyaları
- 13. std :: function ile geri aramalar
- 14. Neden boost :: function std :: list dosyasında saklamıyorum?
- 15. "git add * .js", dosyaları alt dizinlere eklemedi
- 16. MEAN.js - Tüm js dosyaları dağıtılırken birleştirilsin
- 17. Botları programlamayı öğrenmeye nereden başlarım?
- 18. Gitlab-CI'yi Gitlab Omnibus sürümüne nasıl başlarım?
- 19. createprocess function
- 20. açısal js ile yönlendirme js ifade
- 21. Eclipse CDT Bağlantı bazı OpenSSL dosyaları kullanıyor
- 22. Web sitelerini Delphi Prism ile yapmaya nasıl başlarım?
- 23. git yalnızca bazı değiştirilmiş dosyaları ekleyin
- 24. Bootstrap JS BrowserSync ile çalışmadı
- 25. Açıklamalı JS ile İçerme Fonksiyonu JS
- 26. Neden bazı satır içi Krom
- 27. Can Jekyll css veya js dosyaları üzerinde hareket edebilir mi?
- 28. Rails, jQuery, .js.erb dosyaları, JS tarayıcı tarafından çalıştırılmadı
- 29. C++ ile strateji kalıbını std :: function ile nasıl uygulanır
- 30. Bazı dosyaları yüklediklerinden nasıl emin olun
İşte ilgili bir SO sorusu: http://stackoverflow.com/questions/1140089/how-does-an-anonymous-function-in-javascript-work. Bu, imo, yinelenen olarak kapatılmalıdır. –
Bu soru bir kopya değildir ve başvurulan soruyla ilgili hiçbir şey yoktur, çünkü başvurulan soru, bu gönderide olduğu gibi bir kapağın amacının ne olduğunu sormadığından, başvurulan soru, çağrının neden aynı satırda olması gerektiğini sorar. beyanname olarak –