В чем разница двух конструкций в js?
$(function()

Это
$(document).ready(function() { ... });

Ждет пока весь HTML будет полностью загружен.

 Это IIFE

(function($) {
.......
})
(jQuery);

Функция которая вызывается сразу при определении, т.е
В классическом случае вам нужно сначала определить функцию, затем ее вызвать.

function hello() {
   console.log("HELLO WORLD")
}
hello();

В случае IIFE она вызывается сразу

(function() {
     console.log("HELLO WORLD")
})()
$(function() {

});вызывает функцию $ и отдает ей анонимную функцию в качестве аргумента

(function($) {

})(jQuery);Вызывает анонимную функцию сразу, параметр jQuery попадет в аргумент $ внутри функции