Показать сообщение отдельно
  #20 (permalink)  
Старый 21.06.2009, 18:13
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от Riim
То, что так задумано мне ясно, не ясно зачем.
Что не ясно "зачем"? Почему, оператор группировки всегда внутри себя содержит выражение? Грамматика такая. А что ещё, по Вашему, он там может содержать?

Касательно же функций (и изначального вопроса) - не обязательно функцию оборачивать в скобки, чтобы иметь возможность запустить. Например, здесь нет никаких скобок, но функция запускается:

var a = {
  b: function () {
    return 10;
  }()
};

alert(a.b); // 10


Почему? Потому что парсер уже распознал функцию как FE. В случае же описания в начале темы - есть неоднозначность - путаница с FD, поэтому парсер выдаёт ошибку. Когда же мы помещаем её в оператор группировки, внутренности которого всегда являются expression'ом (а что ещё, по Вашему, там может быть? ), парсер однозначно определят функцию, как FE, и выполняет.
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 21.06.2009 в 18:20.
Ответить с цитированием