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