Точка и запетая за безопасност в IIFE
Нека сега нашата функция, извикваща се на място, да не започва с плюс, а да е обградена с кръгли скоби, ето така:
(function() {
console.log(1); // ще изведе 1
})();
Нека променливата num се зададе отвън
на функцията:
let num = 1; // точка и запетая е поставена
(function() {
console.log(num); // ще изведе 1
})();
Нека сега забравим да поставим точка и запетая:
let num = 1
(function() {
console.log(num); //!! ще даде грешка
})();
Оказва се, че такъв код ще даде грешка, тъй като JavaScript възприема нашата функция като продължение на командата от първия ред.
За да избегнете такива проблеми, преди извикването на функция на място винаги е необходимо да се поставя точка и запетая, ето така:
let num = 1
;(function() {
console.log(num); // ще изведе 1
})();
Може да изглежда, че проблемът е донякъде изкуствен. Всъщност, не е така. Може да възникне ситуация, когато на вашата страница се зареждат няколко скрипта от отделни файлове. В този случай в края на един файл може да бъде пропусната точка и запетая и това автоматично ще доведе до проблем, ако вторият файл започва с извикване на функция на място.
Затова, винаги-винаги поставяйте точка и запетая преди извикване на функция на място, дори ако в момента сте сигурни, че няма да има проблеми. Те могат да възникнат по-късно.
Прилагаме казаното по-горе и извикваме функция на място, като поставяме точка и запетая в началото:
;(function() {
console.log(1); // ще изведе 1
})();
Определете, без да стартирате кода, какво ще се изведе в конзолата:
let str = 'str';
(function() {
console.log(1);
})();
Определете, без да стартирате кода, какво ще се изведе в конзолата:
let str = 'str'
(function() {
console.log(1);
})();