Force Sintaksė

Yra „ JSLint“ parinktis, viena iš „gerų dalių“ iš tikrųjų yra „[reikalauja] parenų aplink tiesioginius skambučius“, o tai reiškia, kad pastatas

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

vietoj to reikia rašyti kaip

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

Mano klausimas yra, ar kas gali paaiškinti, kodėl ši antroji forma gali būti laikoma geresne? Ar tai stabilesnė? Mažiau klaidų? Kokią naudą ji turi pirmojoje formoje?


Užduodamas šį klausimą, supratau, kad svarbu turėti aiškų vizualinį skirtumą tarp funkcijų ir funkcijų vertybių. Apsvarstykite atvejį, kai tiesioginio skambučio rezultatas yra užduoties raiškos dešinė pusė:

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

Nors išoriniai skliautai yra sintaksiškai nereikalingi, atidarymo kronšteinas suteikia preliminarias nuorodas, kad priskirta reikšmė nėra pati funkcija, o skambinimo funkcijos rezultatas.

Tai panaši į „Crockford“ patarimus dėl dizainerių funkcijų kapitalizavimo - jis skirtas vizualiam suvokimui visiems, kurie žiūri į pradinį kodą.

104
02 июня '09 в 16:05 2009-06-02 16:05 Bobby Eickhoff paklausė birželio 02'09 09:05 2009-06-02 16:05
@ 3 atsakymai

Iš „Douglass Crockford“ stiliaus vadovo : („paieška“ vadinama nedelsiant)

Kai reikia skambinti iš karto, visa skambučio išraiška turi būti suvyniota į parenas, kad būtų aišku, jog sukurta vertė yra funkcijos, o ne pačios funkcijos rezultatas.

Taigi iš esmės jis mano, kad jis aiškiai atskiria funkcijų vertes ir funkcijų vertes. Taigi, tai yra stilistinis klausimas, o ne pats reikšmingas kodas pačiame kode.

atnaujinta nuoroda, senas ppt nebėra

66
02 июня '09 в 16:11 2009-06-02 16:11 atsakymas pateikiamas cgp 02 birželio 09 d. 16:11 2009-06-02 16:11

Tiesiogiai vadinamos anoniminės funkcijos ją apgauna į parenas, nes:

border=0
  • Jie yra funkcijų išraiška ir palieka paragenezę, todėl ji bus interpretuojama kaip funkcijos deklaracija, kuri yra sintaksės klaida.

  • Funkcijų išraiškos negali prasidėti žodyno funkcija.

  • Skiriant funkcijai išraišką kintamajam, pati funkcija negrąžinama, grąžinama funkcijos grąžinimo vertė. todėl parens vertina tai, kas jų viduje, ir sukuria vertę. kai funkcija yra vykdoma, ir baigiantys parenai ..}() sukelia funkciją nedelsiant.

1
24 февр. Atsakymą Dathan pateikė vasario 24 d. 2012-02-24 00:06 '12 - 0:06 2012-02-24 00:06

Arba naudokite:

 void function () { ... } () 
-2
27 марта '14 в 21:30 2014-03-27 21:30 atsakymą pateikė Agamemnus , kovo 27 d. 14, 21:30 2014-03-27 21:30

Kiti klausimai apie „ žymų arba „ Užduoti klausimą“