Точки с запятой

Что не так?

Найдите ошибку в коде, не запуская его

let a = 5

(function() {
  alert(a)
})()

Почему так?

TypeError: 5 is not a function

Пропущенная точка с запятой приводит к тому, что самовызываемая функция превращается в аргумент при выполнении числа 5 как функции.

Это равноценно такой записи

let a = 5(function() {alert(a)})()

5 — примитив, его нельзя выполнить и из-за этого скрипт умирает.

ПОТРАЧЕНО

Корректная запись

let a = 5;

(function() {
  alert(a)
})();

Что же делать?

Соблюдайте стиль кодирования и всегда ставьте точки с запятой и фигурные скобки.