Может так понятнее станет
var globalSong = 0;
var a = function (song) {
console.log(song);
};
globalSong++;
a(globalSong);
Ничего сверхестественного тут не происходит. Объявляется функция которая принимает один параметр и тут же вызывается с параметром. Неудачно выбрали название для параметром функции и переменной которая передается в качестве этого параметра - одинаковые имена.