Они обе являются анонимными функциями, но (function(){})()
вызывается немедленно, а $(function(){})
вызывается, когда документ готов.
jQuery работает примерно так:
window.jQuery = window.$ = function(arg) {
if (typeof arg == 'function') {
// call arg() when document is ready
} else {
// do other magics
}
}
Таким образом, вы просто вызываете функцию jQuery и передаете функцию, которая будет вызываться для документа, готового.
«Самоисполняющаяся анонимная функция» - это то же самое, что и это.
Единственное отличие состоит в том, что вы не загрязняете глобальное пространство имен.