Sintaksisin gücləndirilməsi

JSLint seçimi var, "Yaxşı hissələrdən" biri "əsl çağırışlar ətrafında parens tələb edir", yəni bina

 (function () { // ... })(); 

əvəzinə yazmaq lazımdır

 (function () { // ... }()); 

Mənim sualım, bu ikinci formanın daha yaxşı hesab edilə biləcəyini kimsəyə izah edə bilərmi? Daha sabit mi? Az səhv meylli? İlk formada hansı üstünlük var?


Bu soruyu soruşanda, funksiyaların dəyərləri və funksiyaların dəyərləri arasında aydın vizual fərqlilik olması vacibdir. Birbaşa çağırışın nəticəsi tapşırıq ifadəsinin sağ tərəfi olduğu vəziyyətə baxın:

 var someVar = (function () { // ... }()); 

Xarici mötərizələr sintaktik olaraq lazımsız olsa da, açılış bracket təyin olunan dəyər funksiyanın özü deyil, əksinə, çağırılan funksiyanın nəticəsidir.

Bu, Crockfordun dizayner funksiyalarının kapitallaşdırılması ilə bağlı məsləhətinə bənzəyir - bu, mənbə koduna baxan hər kəs üçün vizual qavrayış üçün nəzərdə tutulmuşdur.

104
02 июня '09 в 16:05 2009-06-02 16:05 Bobby Eickhoff 02 iyun 2009 -da saat 16:05 da soruşdu. 2009-06-02 16:05
@ 3 cavab

Douglass Crockford stilində : (axtarış "dərhal çağırılır")

Bir funksiya dərhal çağırılmalı olduqda, bütün çağırış ifadəsi, parenslərdə sarılmalıdır ki, yaradılan dəyər funksiyanın özü deyil, funksiyanın nəticəsidir.

Əsasən, o, funksiyaların dəyərləri və funksiyaların dəyərləri arasında daha aydın fərqləndiyini hiss edir. Beləliklə, bu üslub sualdır və kodu özündə əhəmiyyətli fərq deyil.

yenilənən link, köhnə PDT artıq yoxdur

66
02 июня '09 в 16:11 2009-06-02 16:11 Cavab cgp 02 iyun '09 saat 16:11 'da verilmişdir 2009-06-02 16:11

Birbaşa anonim funksiyalar deyilir, çünki parens-lərdə onu bağlayırlar:

border=0
  • Onlar funksiyaların ifadəsidir və paragenezi buraxırlar, buna bir sintaksis səhvi olan bir funksiyanın bəyan edilməsi kimi şərh olunacaq.

  • Function ifadələri lüğət funksiyası ilə başlaya bilməz.

  • Bir dəyişənə bir funksiyanı ifadə edərkən, funksiyanın özü qaytarılmır, funksiyanın qaytarılması dəyəri qaytarılır. Buna görə də, parens onların içərisində olan dəyəri dəyərləndirir. funksiya yerinə yetirildikdə və sona yetirən parens ..}() funksiyanı dərhal yerinə yetirir.

1
24 февр. Cavab 24 fevralda Dathan tərəfindən verilir . 2012-02-24 00:06 '12 at 0:06 2012-02-24 00:06

Və ya istifadə edin:

 void function () { ... } () 
-2
27 марта '14 в 21:30 2014-03-27 21:30 Cavab Ağamemnus tərəfindən 27 Mart '14 'də saat 21: 30-da verilir

tags ilə bağlı digər suallar və ya bir sual