Punktkoma ohutuse tagamiseks IIFE-s

Olgu meie koheselt väljakutsuv funktsioon mitte plussiga alguses, vaid ümbritsetud ümarsulgudega, nagu siin:

javascript(function() {
  console.log(1); // väljastab 1
})();

Olgu muutuja num määratud funktsioonist väljaspool:

javascriptlet num = 1; // punktkoma on olemas

(function() {
  console.log(num); // väljastab 1
})();

Oletame nüüd, et unustasime punktkoma panna:

javascriptlet 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:

javascriptlet 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:

javascript;(function() {
  console.log(1); // väljastab 1
})();
Задание 1

Määrake, koodi käivitamata, mis väljastatakse konsooli:

javascriptlet str = 'str';

(function() {
  console.log(1);
})();
Задание 2

Määrake, koodi käivitamata, mis väljastatakse konsooli:

javascriptlet str = 'str'

(function() {
  console.log(1);
})();