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:
(function() {
console.log(1); // izvadīs 1
})();
Lai mainīgais num tiek definēts ārpus
funkcijas:
let num = 1; // semikols ir ielikts
(function() {
console.log(num); // izvadīs 1
})();
Lai tagad mēs aizmirsām ielikt semikolu:
let 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:
let 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:
;(function() {
console.log(1); // izvadīs 1
})();
Nosakiet, nepalaist kodu, ko izvadīs konsolē:
let str = 'str';
(function() {
console.log(1);
})();
Nosakiet, nepalaist kodu, ko izvadīs konsolē:
let str = 'str'
(function() {
console.log(1);
})();