⊗jsPmFCPf 272 of 505 menu

JavaScript-däki IIFE-niň suwasty kemçilikleri

Iki kod bölegine seredeliň.

Birinjisi:

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

Ikinjisi:

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

Bu iki kod bölegi takmynan birmeňzeş, ýöne olary işletseňiz, netije tapawutly bolar. Birinji kod konsola 3 sanyny çykarar, ikinjisi bolsa 1 sanyny.

Bu tapawut nämä görä ýüze çykdy: bolşuny, bir ýagdaýda birinji setir kodunyň ahyrynda nokatli çykgýç ýok, ikinji ýagdaýda bolsa bar.

Sorap bilersiňiz: nähili, sebäbi JavaScriptde buýrugyň ahyryndaky nokatli çykgýç hökmany däl! Aslynda bu örän hem däl. Hakykatda näme bolýanyny anyklalyň.

Birinji kody şeýle ýazyp bolýar:

let netije = 1 + function() { return 2; }(); console.log(netije); // 3 çykarar

Indi ýene-de aýdyň görünýär, bire ýerinde çagyrylýan funksiýanyň netijesi goşulýar, ýagny 2. Şonuň üçin jemi netije 3 bolar.

Biriň yzyna nokatli çykgýç goýulsa, kod interpretator tarapyndan başgaça kabul ediler:

// Birinji buýruk: let netije = 1; // Ikinji buýruk: +function() { return 2; }(); // Üçünji buýruk: console.log(netije); // 1 çykarar

Ýagny üýtgeýjä bellik we ýerinde funksiýa çagyrmak dürli buýruklar bolar. Hemmeleri nokatli çykgýçyň bolmagy üçin!

Demek, bu ýagdaýda ýerinde funksiýa çagyrmak umuman hiç zat etmeýär - diňe ýere 2 sanyny gaýtaryp, netije üýtgeýjisine hiç hili täsir etmeýär.

Onda düşüneliň, näme üçin biz JavaScriptde nokatli çykgýç ýazmasak hem bolýar. Görkezilen ýaly nokatli çykgýçsyz kod bolsun:

let netije = 1 // netije-e 1 ýazylar let synag = 2 // synag-a 2 ýazylar

Ol dogry işleýär, sebäbi interpretator her setiriň ahyryna özi nokatli çykgýç goýýar.

Ýöne şu koda serediň:

let netije = 1 + 2; // netije-e 3 ýazylar

Indi birinji setiriň ahyrynda nokatli çykgýç awtomatik goýulmaz, sebäbi interpretator ikinji setiriň buýrugynyň birinji setiriň buýrugynyň bölegi diýip düşünýär.

Ýöne özümiz nokatli çykgýç goýsaňyz - netije gaty başgaca bolar:

let netije = 1; // netije-e 1 ýazylar + 2; // buýruk hiç zat etmeýär, ýöne ýalňyş hem bolmaz

Demek, interpretator özi nokatli çykgýç goýýar, diňe indiki buýruk öňküsiň bölegi bolmasa.

Indi bu koda serediň:

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

Hakykatdanam, ikinji setir - diňe birinji setiriň buýrugynyň dowamy we interpretator nokatli çykgýçy awtomatik goýmaýar. Şonuň üçin, eger birinji setiriň ahyryna özümiz nokatli çykgýç ýazsaňyz - netije ýene-de başgaca bolar. Bu şuny aňladýar, problemalardan gaça durmak üçin, gerek ýerlerde hemişe nokatli çykgýç goýmak has gowy.

Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et