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:
javascript(function() {
console.log(1); // išves 1
})();
Tegul kintamasis num yra apibrėžiamas už
funkcijos ribų:
javascriptlet num = 1; // kabliataškis yra
(function() {
console.log(num); // išves 1
})();
Tarkime, dabar mes pamiršome padėti kabliataškį:
javascriptlet 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:
javascriptlet 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į:
javascript;(function() {
console.log(1); // išves 1
})();
Nustatykite, paleidę kodą, kas bus išvesta į konsolę:
javascriptlet str = 'str';
(function() {
console.log(1);
})();
Nustatykite, paleidę kodą, kas bus išvesta į konsolę:
javascriptlet str = 'str'
(function() {
console.log(1);
})();