Punktkoma ohutuse tagamiseks IIFE-s
Olgu meie koheselt väljakutsuv funktsioon mitte plussiga alguses, vaid ümbritsetud ümarsulgudega, nagu siin:
(function() {
console.log(1); // väljastab 1
})();
Olgu muutuja num määratud funktsioonist
väljaspool:
let num = 1; // punktkoma on olemas
(function() {
console.log(num); // väljastab 1
})();
Oletame nüüd, et unustasime punktkoma panna:
let num = 1
(function() {
console.log(num); //!! annab vea
})();
Selgub, et selline kood annab vea, kuna JavaScript tõlgendab meie funktsiooni kui esimese rea käsu jätku.
Selliste probleemide vältimiseks tuleb enne funktsiooni kohast väljakutsumist alati panna punktkoma, nagu siin:
let num = 1
;(function() {
console.log(num); // väljastab 1
})();
Võib tunduda, et probleem on mõnevõrra kunstlik. Tegelikult ei ole see nii. Võib esineda olukord, kus teie lehele laaditakse mitu skripti erinevatest failidest. Sellisel juhul võib ühe faili lõpus punktkoma puududa ja see põhjustab automaatselt probleemi, kui teine fail algab funktsiooni kohase väljakutsumisega.
Seetõttu pange alati-alati punktkoma enne funktsiooni kohast väljakutsumist, isegi kui te olete praegu kindel, et probleeme ei teki. Need võivad tekkida hiljem.
Rakendame ülaltoodut ja kutsume funktsiooni koheselt välja, pannes algusse punktkoma:
;(function() {
console.log(1); // väljastab 1
})();
Määrake, koodi käivitamata, mis väljastatakse konsooli:
let str = 'str';
(function() {
console.log(1);
})();
Määrake, koodi käivitamata, mis väljastatakse konsooli:
let str = 'str'
(function() {
console.log(1);
})();