Зачем использовать (function () {}) () или! Function () {} ()? - PullRequest
3 голосов
/ 29 сентября 2011

Я читал В JavaScript, в чем преимущество! Function () {} () перед (function () {}) ()? тогда меня поразило, зачем использовать:

(function(){})() или !function(){}() вместо function(){}()?

Есть ли какая-то конкретная причина?

Ответы [ 3 ]

2 голосов
/ 29 сентября 2011

Я думаю, вы спрашиваете, зачем использовать:

var fn = (function(){}());

против

var fn = function(){}();

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

Полное объяснение можно найти в «1010 * Важной паре парней» Питера Мишо .

2 голосов
/ 29 сентября 2011

Небольшое отклонение в ответе RobG.

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

Единственное различие между этими двумя сценариями - это последние два символа (добавление двойных скобок),Поскольку это могут быть очень длинные программы, начальные скобки указывают на то, что «это будет выполнено немедленно».

Необходимо ли запускать программу?Нет. Это полезно для кого-то, кто смотрит на код и пытается его понять?Да.

2 голосов
/ 29 сентября 2011

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

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

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

...