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

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

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

редактировать:

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

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

3 ответа

Решение

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

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

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

function(){}();

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

(function(){})();

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

function(){}

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

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

тогда фф и т.е выкинет ошибку

Другие вопросы по тегам