Kabliataškis saugumui IIFE
Tegul mūsų iškart iškviečiama funkcija būna ne su pliuso ženklu pradžioje, o apsupta paprastais skliaustais, štai taip:
(function() {
console.log(1); // išves 1
})();
Tegul kintamasis num yra apibrėžiamas už
funkcijos ribų:
let num = 1; // kabliataškis yra
(function() {
console.log(num); // išves 1
})();
Tarkime, dabar mes pamiršome padėti kabliataškį:
let num = 1
(function() {
console.log(num); //!! išmes klaidą
})();
Pasirodo, kad toks kodas išmes klaidą, nes JavaScript mūsų funkciją suvokia kaip pirmos eilutės komandos tęsinį.
Kad išvengtumėte tokių problemų, prieš funkcijos iškartinį iškvietimą visada būtina dėti kabliataškį, štai taip:
let num = 1
;(function() {
console.log(num); // išves 1
})();
Gali atrodyti, kad problema yra šiek tiek priverstinė. Iš tikrųjų, taip nėra. Gali būti tokia situacija, kai jūsų puslapyje yra prijungiami keli skriptai iš atskirų failų. Tokiu atveju vieno failo pabaigoje gali būti praleistas kabliataškis ir tai automatiškai sukels problemą, jei antrasis failas prasideda funkcijos iškartiniu iškvietimu.
Todėl visada-visada dėkite kabliataškį prieš funkcijos iškartinį iškvietimą, net jei šiuo metu esate įsitikinę, kad problemų nebus. Jos gali atsirasti vėliau.
Pritaikykime aukščiau pasakyta ir iškvieskime funkciją iškart, pradžioje padėdami kabliataškį:
;(function() {
console.log(1); // išves 1
})();
Nustatykite, paleidę kodą, kas bus išvesta į konsolę:
let str = 'str';
(function() {
console.log(1);
})();
Nustatykite, paleidę kodą, kas bus išvesta į konsolę:
let str = 'str'
(function() {
console.log(1);
})();