Подтвердить что ты не робот

Разница между (function() {})(); и function() {}();

Возможный дубликат:
Являются ли "(function() {})()" и "(function() {}())" функционально равными в JavaScript?

Это то, что я еще не совсем понял, но я использовал функцию() {}() только потому, что мой синтаксис VIM затягивается, если я добавляю скобки, хотя я видел (function() {})() много раз, может быть, это вещь IE?

изменить

var singleton = function() {
    // code
}();

var singleton = (function() {
    // code
})();
4b9b3361

Ответ 1

Питер Мишо обсуждает разницу в Важная пара Parens.

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

Ответ 2

Дополнительный набор круглых скобок дает более четкое представление о том, что вы создаете функцию, а затем вызываете ее. Это стиль кода, а не функциональность.

Ответ 3

function(){}();

не работает в большинстве браузеров. Вы должны использовать скобки вокруг функции для ее выполнения.

(function(){})();

тогда браузер узнает, что последняя скобка должна быть применена ко всему выражению

function(){}

UPD. Если вы не используете круглую скобку, то браузер может неправильно понять вас. Если вы просто вызываете функцию и отклоняете результат

function() {
    alert(1);
}();

то ff и т.д. будет вызывать ошибку