SORU
18 Kasım 2010, PERŞEMBE


Nasıl javascript İnit fonksiyonu ve

Ben genellikle aşağıdaki kodu bakın:

(function () {
  // init part
})();

ama asla nasıl çalışır kafamı alabilir. Son parantez özellikle kafa karıştırıcı buluyorum. Biri Yürütme Bağlamı (AB) ve Değişken Nesneleri açısından (VO) nasıl çalıştığını açıklayabilir mi?

CEVAP
18 Kasım 2010, PERŞEMBE


Genelde insanlar bunu açıklar şekilde diğer JavaScript kalıpları benzer olduğunu göstermek için.

İlk olarak, fonksiyon (aslında, en az beş tane var, ama bu iki ana sanıklar vardır) bildirmek için iki yol vardır.:

function foo() {/*code*/}

ve

var foo = function() {/*code*/};

Eğer bu inşaat garip görünüyor olsa bile, muhtemelen olaylar takarken her zaman kullanabilirsiniz:

window.onload=function(){/*code*/};

İkinci form düzenli bir değişken bildirimi çok da farklı olmadığını dikkat etmelidir:

var bar = 5;
var baz = 'some string';
var foo = function() {/*code*/};

Ama JavaScript, her zaman doğrudan veya bir değişken bir değeri kullanarak arasında bir seçim var. bar 5, daha sonra ise önümüzdeki iki ifade eşdeğerdir:

var myVal = bar * 100; // use 'bar'
var myVal = 5 * 100;   // don't use 'bar'

Eğer kendi başına 5 kullanabilirsiniz, neden kendi başına function() {\*code*\} de kullanabilir mi? Aslında, yapabilirsiniz. Ve isimsiz bir fonksiyon denir. Bu iki örnek eşdeğer olarak:

var foo = function() {/*code*/}; // use 'foo'
foo();                           

(function(){/*code*/}());        // don't use 'foo' 

Göreceksiniz tek fark ekstra parantez içinde. Bu sadece çünkü eğer başlamadan bir satır ile anahtar function, ayrıştırıcı olacağını düşünüyorum olduğunuz ilan fonksiyonu kullanarak ilk desen de üstüne bu cevap atmak ve bir sözdizimi hatası hariç. Bu yüzden pantolon askısı içinde tüm anonim fonksiyon sarın ve sorun ortadan kalkar.

Diğer bir deyişle, aşağıdaki üç ifade geçerlidir:

5;                        // pointless and stupid
'some string';            // pointless and stupid
(function(){/*code*/}()); // wonderfully powerful

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CareyHolzman

    CareyHolzman

    24 Ocak 2008
  • knopik96

    knopik96

    7 Mayıs 2011
  • Professor Messer

    Professor Me

    27 NİSAN 2007