Точка с запятой для безопасности в 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);
})();