Разница между (function(){})(); и function(){}();
Возможный дубликат:
"(Function () {}) ()" и "(function () {} ())" функционально равны в JavaScript?
Это то, что я еще не совсем понял, но я использую функцию () {} () только потому, что мой синтаксис VIM подсвечивает, если я добавляю скобки, хотя я видел (function () {}) () вокруг много раз, может быть, это вещь IE?
редактировать:
var singleton = function() {
// code
}();
var singleton = (function() {
// code
})();
3 ответа
Питер Мишо обсуждает разницу в " Важной паре паренов".
По сути, скобки представляют собой соглашение, обозначающее, что сразу же вызывается выражение вызываемой функции, а не простая функция. Особенно, если тело функции длинное, это уменьшает сюрпризы,
Дополнительный набор скобок проясняет, что вы создаете функцию, а затем вызываете ее. Это стиль кодирования, а не функциональность.
function(){}();
не работает в большинстве браузеров. Вы должны использовать круглые скобки вокруг функции, чтобы выполнить ее
(function(){})();
тогда браузер узнает, что последняя скобка должна быть применена ко всему выражению
function(){}
UPD: Если вы не используете круглые скобки, браузер может неправильно вас понять. Если вы просто вызываете функцию и отклоняете результат
function() {
alert(1);
}();
тогда фф и т.е выкинет ошибку