Почему функция, вызывающая себя, выдает ошибку, не заключая в скобки

У меня есть два фрагмента кода. Первый работает нормально, а второй дает ошибку.

var b = function abc() {
    alert(a);
}()

Здесь я получаю сообщение с предупреждением.

function abc() {
    alert(a);
}()

Здесь я получаю сообщение об ошибке."Uncaught SyntaxError: неожиданный токен)" Я использую браузер Chrome.

Снова следующее работает.

(function abc() {
    alert(a);
})()

Какова цель заключающих в скобки?

1 ответ

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

Статья в Википедии довольно информативна по этому вопросу.

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