⊗jsPmFCPS 273 of 505 menu

წერტილი-მძიმის უსაფრთხოება IIFE-ში

ახლა დავუშვათ, რომ ჩვენი დაუყოვნებლივ გამოსაძახებელი ფუნქცია არ იწყება პლუსით, არამედ გახვეულია მრგვალ ფრჩხილებში, ასე:

(function() { console.log(1); // გამოიტანს 1-ს })();

დავუშვათ, რომ ცვლადი num განსაზღვრულია ფუნქციის გარეთ:

let num = 1; // წერტილი-მძიმი დასმულია (function() { console.log(num); // გამოიტანს 1-ს })();

დავუშვათ, რომ ახლა დაგვავიწყდა წერტილი-მძიმის დასმა:

let num = 1 (function() { console.log(num); //!! აჩვენებს შეცდომას })();

გამოდის, რომ ასეთი კოდი აჩვენებს შეცდომას, რადგან JavaScript ჩვენს ფუნქციას აღიქვამს, როგორც პირველი ხაზის ბრძანების გაგრძელებას.

ასეთი პრობლემების თავიდან ასაცილებლად, ფუნქციის დაუყოვნებელი გამოძახების წინ ყოველთვის საჭიროა წერტილი-მძიმის დასმა, ასე:

let num = 1 ;(function() { console.log(num); // გამოიტანს 1-ს })();

შეიძლება ჩანდეს, რომ პრობლემა გარკვეულწილად გამოგონილია. სინამდვილეში, ასე არ არის. შეიძლება იყოს ასეთი სიტუაცია, რომ თქვენს გვერდზე რამდენიმე ცალკეული ფაილიდან შემოდის სკრიპტი. ამ შემთხვევაში, ერთი ფაილის ბოლოს შეიძლება დაეტოვებინათ წერტილი-მძიმე და ეს ავტომატურად გამოიწვევს პრობლემას, თუ მეორე ფაილი იწყება ფუნქციის დაუყოვნებელი გამოძახებით.

ამიტომ, ყოველთვის-ყოველთვის დასვით წერტილი-მძიმე ფუნქციის დაუყოვნებელი გამოძახების წინ, მაშინაც კი, თუ ამ მომენტისთვის დარწმუნებული ხართ, რომ პრობლემები არ იქნება. ისინი შეიძლება მოგვიანებით წარმოიშვას.

გამოვიყენოთ ზემოთ ნათქვამი და გამოვიძახოთ ფუნქცია დაუყოვნებლივ, დასაწყისში წერტილი-მძიმის დასმით:

;(function() { console.log(1); // გამოიტანს 1-ს })();

განსაზღვრეთ, კოდის გაშვების გარეშე, რა გამოიტანს კონსოლში:

let str = 'str'; (function() { console.log(1); })();

განსაზღვრეთ, კოდის გაშვების გარეშე, რა გამოიტანს კონსოლში:

let str = 'str' (function() { console.log(1); })();
ქართული
AfrikaansAzə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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა