Это не функция.
(function() {
...
})()
оценивает анонимную функцию прямо тогда . И результат оценки, по-видимому, не возвращает объект-функцию в этом случае: -)
Рассмотрим:
f = (function() {
return "not a function :("
})()
alert(f())
и
f = (function() {
return function () { return "Yay!" }
})()
alert(f())
Удачного кодирования:)
Вот функция, которая «выполнит что-то один раз», а затем «вернет что-то для выполнения позже». (См. «Вы можете [назначить] функцию или вызвать ее; вы не можете сделать и то, и другое ...» из ответа Слакса.) Однако я бы так не поступил.
Init = (function () {
function Init () {
alert("whee!")
}
Init()
return Init
})()
Init()
Вот еще одно решение (намного короче / чище) от CD Sanchez (см. Комментарий), в котором используется тот факт, что назначение оценивается как присвоенное значение:
var Init; (Init = function Init () {
alert ("wee");
})()