Полагаю, вы имели в виду разницу между ( I ):
function(){}();
и ( II ):
function func(){};
func();
или даже ( III ):
var func = function(){};
func();
Все три ведут себя одинаково в отношении результатов, однако имеют разные названия и область видимости:
I : это не сделает функцию доступной ни под каким именем, она будет запущена один раз и забыта. Вы не можете ссылаться на него в будущем
II : функция func
создана и доступна во всей функции ограждения, даже до ее определения ( подъем )
III : * определяется переменная func
, указывающая на функцию. Он не будет доступен до его определения.
Обратите внимание, что в II и III функция доступна по имени func
и может вызываться снова несколько раз. Это невозможно с функцией самовызова в I .