Semikols IIFE drošībai

Lai tagad mūsu nekavējoties izsauktā funkcija sākas nevis ar plusu, bet ir ietverta apaļās iekavās, šādi:

javascript(function() {
  console.log(1); // izvadīs 1
})();

Lai mainīgais num tiek definēts ārpus funkcijas:

javascriptlet num = 1; // semikols ir ielikts

(function() {
  console.log(num); // izvadīs 1
})();

Lai tagad mēs aizmirsām ielikt semikolu:

javascriptlet num = 1

(function() {
  console.log(num); //!! izvadīs kļūdu
})();

Izrādās, ka šāds kods izvadīs kļūdu, jo JavaScript uztver mūsu funkciju ka pirmās rindas komandas turpinājumu.

Lai izvairītos no šādām problēmām, pirms nekavējoties izsauktas funkcijas izsaukšanas vienmēr nepieciešams ielikt semikolu, šādi:

javascriptlet num = 1

;(function() {
  console.log(num); // izvadīs 1
})();

Var šķist, ka problēma ir nedaudz mākslīga. Patiesībā, tā nav. Var rasties tāda situācija, ka jūsu lapā tiek pievienoti vairāki skripti no atsevišķiem failiem. Šajā gadījumā viena faila beigās var trūkt semikols, un tas automātiski izraisīs problēmu, ja otrais fails sākas ar nekavējoties izsauktas funkcijas izsaukšanu.

Tāpēc vienmēr-vienmēr lieciet semikolu pirms nekavējoties izsauktas funkcijas izsaukšanas, pat ja jūs pašlaik esat pārliecināts, ka problēmu nebūs. Tās var rasties vēlāk.

Pielietosim iepriekš teikto un izsauksim funkciju nekavējoties, ievietojot sākumā semikolu:

javascript;(function() {
  console.log(1); // izvadīs 1
})();
Задание 1

Nosakiet, nepalaist kodu, ko izvadīs konsolē:

javascriptlet str = 'str';

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

Nosakiet, nepalaist kodu, ko izvadīs konsolē:

javascriptlet str = 'str'

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