Если внутри функции выполняется присваивание без оператора присваивания, браузер начинает искать a ,не находит ее в функции,выходит из нее,не на ходит ее там , и создает глобальную переменную вне функции,перезатерая существующую глобальную переменную если она присутствует.
(function () {
a = 5
})