Javascript self-invoking functions
Конструкция ;function(){}() недопустима - синтаксическая ошибка, зато допустима !function(){}(), и это на байт короче (function(){})().
'!' указывает на то, что это не function declaration, а function expression. Тут важно показать интерпретатору, что эта функция входит в состав какого-то выражения, а не сама по себе.
вариант !function(){}() рабочий, так как здесь функция находится в составе выражения (отрицание). Лучше, конечно, использовать скобки (function () {} ())