Он обычно используется для обхода причуды в синтаксисе JavaScript. Это дает синтаксическую ошибку:
function() {
}();
Она читается как объявление функции (например, function foo () {}
), а не выражение функции. Поэтому добавление! перед этим, или обертывая его в круглые скобки, заставляет парсер понимать, что это выражение.