2016-07-05 16 views
7

gördüğüm hayatını yazılı:Hemen Çağrılı İşlev İfadesi: Parantez nereye yerleştirilir?

(function() { 
    console.log("do cool stuff"); 
})(); 

yanı sıra:

(function() { 
    console.log("do more cool stuff"); 
}()); 

Onlar durumlarda ben söylendi olsa onları kullanmış herhangi bir bağlamda aynı çalışmıyor gibi görünüyor bir yol doğru, diğeri yanlış, tersi. Kimsenin diğeri üzerinde bir düzen yazıldığından herhangi bir katı mantığı veya mantığı var mı? Fonksiyon gövdesi kapandıktan sonra ancak invazyon parantezinin devreye girmesinden önce veya son kapanış parantezinden önce ama sonra potansiyel olarak daha fazla olabileceği durumlar olabilir mi? Bunları çoğunlukla bir Açısal modül kapanışında kullandım ve herhangi bir gerçek ya da ötekine gitmek için herhangi bir gerçek bir şey göremiyorum, başka birinin farklı deneyime sahip olup olmadığını merak ediyorum.

+0

Önemli değil. "Bir yolun doğru ve diğerinin yanlış olduğu söylendi, tam tersi" --- bu sadece bir tat meselesi. – zerkms

cevap

8

Kısa cevap: Önemli değil, onları koyduğunuz sürece.

Uzun cevap: Önemli değil, çünkü JavaScript için tek önemli şey, orada olmaları. Bunun nedeni, dil özelliğininanahtar sözcüğü ile başlatılması gerektiğini belirtir. işlevini bildirirseniz. Dolayısıyla, böyle bir hayattan tanımlamak için spec aykırıdır: Bunun

function() {}(); 

geçici çözüm deyimi artık function anahtar kelimeyle başlayan etmeyecek şekilde, parantez içinde tüm şey akıtmaktır. Sen

(function() {})(); 

yanı sıra kullanılarak

kullanarak bunu başarmak: Seçtiğiniz bir

(function() {}()); 

tamamen keyfi ve dolayısıyla size kalmıştır.

I (şahsen), işlevi parantez koymak değil bu bir gibi yani çağrı etrafında:

(function() {})(); 

Sebep: Ben bir şey sarılı olan kod en küçük bölümünü kullanmak istiyorum sadece teknik nedenlerle gerekli ve bu işlev tanımı değil, çağrıdır. Bunun dışında, 'u tanımlayamayacağınız söylentisi, bu şekilde bir işlev tanımladığından, bu işlevi çağırmakla ilgili değildir. Bu yüzden, tanımı değil, çağrıyı tamamladığınızda daha net olduğunu düşünüyorum.

+0

... ve uzun bir cevap? – zerkms

+0

Düşüncelerim tam olarak, haha, uzun bir cevabı çok isterim. –

+0

Eklendi, çok erken * kaydetmiştim. Bunun için üzgünüm :-( –

İlgili konular