Javascript plus funksiyası adı qarşısında daxil edin

Öz-özünə başlama funksiyaları haqqında məlumat axtarırdıq və bir yerdə bu təyinata rast gəldim:

 +function(){} 

Kimsə mənə işarənin qarşısında + işarəsi nə deməkdir?

785
12 нояб. jOpacic tərəfindən təyin 12 nov. 2012-11-12 13:06 '12 at 13:06 2012-11-12 13:06
@ 3 cavab

Bu, ayrıştırıcıyı bir hissəyə aşağıdakı hissəyə müalicə etməyə səbəb olur. Bu adətən dərhal çağırılan funksiyalar üçün istifadə olunur, məsələn:

 +function() { console.log("Foo!"); }(); 

A + olmadan, parser operatorun gözlədiyi vəziyyətdədirsə (ifadəsi olmayan bir ifadə və ya bir neçə operator ola bilər), söz function funksiya deklarasiyasının başlanmasına bənzəyir və funksiyanın ifadəsi nədir və buna görə də növbəti yuxarıda xəttin sonunda olan) bir sintaksis səhvi olacaq (bu nümunədə bir adın olmaması kimi). + İstifadə edərək + bunu bir funksiya ifadəsi ilə edir, yəni adı isteğe bağlıdır və çağırılacaq funksiyaya istinad gətirir, belə ki, parantezlər etibarlıdır.

+ - bu variantlardan yalnız biridir. Bu da ola bilər ! , ~ və ya demək olar ki, hər hansı digər vahid operator. Alternativ olaraq, parantezlərdən istifadə edə bilərsiniz (bu daha geniş yayılmışdır, lakin çox və ya daha az düzgün sözlə).

 (function() { console.log("Foo!"); })(); // or (function() { console.log("Foo!"); }()); 
1235
12 нояб. Cavab TJ Crowder tərəfindən 12 Noyabrda verilir 2012-11-12 13:07 '12 at 13:07 2012-11-12 13:07

Cavab üçün uşaq sistemi @ TJCrowder + adətən, SO tərəfindən açıqlandığı kimi dəyərin sayısal dökümünü zorlamaq üçün istifadə olunur. Bu halda "unary plus" (axtarışın rahatlığı üçün) adlanır.

 var num = +variant; 
border=0

Beləliklə, bir funksiyadan əvvəl, bir funksiyanın nəticəsini bir sıra kimi tərif etmək məcburiyyətinin bir yolu ola bilər. Mən bunun yenidən baş verəcəyinə şübhə edirəm, amma nəzəri cəhətdən JIT bu funksiyanı sayısal dəyərlə funksiya kimi tərtib etmək üçün istifadə edə bilər. Bununla yanaşı, daha böyük şərtlərdə istifadə edildikdə birləşmə olan unary plus-ın qarşısını almaq üçün parantez lazımdır:

 blah + (+(function(){ var scope; return "4"; })()); 
85
12 нояб. Cavab 12 noyabrda Phil H tərəfindən verilir. 2012-11-12 13:54 '12 at 13:54 2012-11-12 13:54

Beləliklə, qısa cavab, yəqin ki, funksiyanı istifadə edərək sintaksis səhvini maneə törədir.

Mühərrikin void operatorundan istifadə etdiyiniz dönüş dəyərinə hətta maraqlanmadığını da göstərə bilərsiniz:

 void function() { console.log("Foo!"); }(); 

Əlbəttə ki, bu formanın istifadəsi də bu məqsədə xidmət edir.

49
16 нояб. Cavab 16 noyabr tarixində Ja͢ck tərəfindən verilmişdir. 2012-11-16 19:45 '12 saat 19:45 'da 2012-11-16 19:45

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