⊗jsPmFCPf 272 of 505 menu

Ondergrondse klippe van IIFE in JavaScript

Kom ons kyk na twee stukke kode.

Die eerste:

let result = 1 +function() { return 2; }(); console.log(result);

Die tweede:

let result = 1; +function() { return 2; }(); console.log(result);

Hierdie twee stukke kode is byna identies, maar as jy dit uitvoer, sal die resultaat verskil. Die eerste kode sal die nommer 3 na die konsole uitvoer, en die tweede - die nommer 1.

Hoekom is daar so 'n verskil: dit gaan alles oor die feit dat in die een geval aan die einde van die eerste reël van die kode daar geen kommapunt is nie, en in die tweede geval - is daar een.

Jy mag vra: hoe kan dit wees, want in JavaScript is die kommapunt aan die einde van 'n opdrag nie verpligtend nie! Dit is eintlik nie heeltemal so nie. Kom ons vind uit wat regtig gebeur.

Die eerste kode kan so herskryf word:

let result = 1 + function() { return 2; }(); console.log(result); // sal 3 uitvoer

Nou word dit dadelik duidelijk dat by die een die resultaat van die onmiddellike aanroep van die funksie bygetel word, dit wil sê 2. Daarom sal die finale resultaat 3 wees.

As jy egter 'n kommapunt na die een plaas, sal die kode anders deur die interpreteerder verstaan word:

// Eerste opdrag: let result = 1; // Tweede opdrag: +function() { return 2; }(); // Derde opdrag: console.log(result); // sal 1 uitvoer

Dit wil sê die toekenning aan die veranderlike en die aanroep van die funksie op sy plek sal verskillende opdragte word. En dit alles as gevolg van die teenwoordigheid van 'n kommapunt!

Dit blyk dat in hierdie geval die onmiddellike aanroep van die funksie glad niks doen nie - dit gee net die nommer 2 terug nêrens na toe, wat geen effek op die veranderlike result het nie.

Kom ons probeer dan uitvind, hoekom ons uberhaupt nie 'n kommapunt in JavaScript hoef te skryf nie. Laat ons sulke kode sonder kommapunte hê:

let result = 1 // in result sal 1 geskryf word let test = 2 // in test sal 2 geskryf word

Dit werk korrek, aangesien die interpreteerder self aan die einde van elke reël 'n kommapunt geplaas het.

Maar kyk na hierdie kode:

let result = 1 + 2; // in result sal 3 geskryf word

Nou sal die kommapunt aan die einde van die eerste reël nie outomaties geplaas word nie, aangesien die interpreteerder verstaan dat die opdrag van die tweede reël - dit is 'n deel van die opdrag van die eerste reël.

Maar as ons self 'n kommapunt plaas - sal die resultaat heeltemal anders wees:

let result = 1; // in result sal 1 geskryf word + 2; // die opdrag doen niks, maar daar sal ook geen fout wees nie

Dit blyk dat die interpreteerder self 'n kommapunt plaas, slegs as die volgende opdrag nie 'n deel van die vorige een is nie.

En kyk nou na hierdie kode:

let result = 1 +function() { return 2; }(); console.log(result);

Inderdaad, die tweede reël - is net 'n voortsetting van die opdrag van die eerste reël en die interpreteerder plaas nie outomaties 'n kommapunt nie. Dis hoekom, as ons self 'n kommapunt aan die einde van die eerste reël skryf - die resultaat heeltemal anders sal wees. Dit wys dat dit die beste is om altyd 'n kommapunt op die nodige plekke te plaas, om probleme te voorkom.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp