Ответ 1
Да, ваши определения верны, для первых 3:)
Хотя, если вам не нужна закрытие, инструкция будет выполняться немедленно, нет причин для ее переноса, как # 1 (есть, конечно, много действительных времен, когда вам нужно закрытие, просто заметив, если вы этого не сделаете... излишний).
Число 4, однако, неверно, (function($) { })(jQuery);
не привязано к какому-либо событию, это просто закрытие, так что $ === jQuery
внутри него, поэтому вы можете использовать ярлык $
:
(function($) {
//You may use $ here instead of jQuery and it'll work...even if $ means
//something else outside of this closure, another library shortcut for example
})(jQuery);