Я знаю о самоисполняющемся анонимном. И обычно мы создаем их как
(function(){ return 1;})()
причина - функция парсера, которая не запускалась, если мы используем
function(){ return 1}()
Но сегодня я обнаружил, что следующий код тоже работает (проверьте порядок скобок)
(function(){ return 1;}())
function(){ return 1; }()
все равно выдает мне SyntaxError, как и положено
Пожалуйста, объясните, почему? Спасибо за ссылку, чтобы получить более подробную информацию
P.S. вопрос про (function(){ return 1;}())
вариант!
function(){ return 1; }()
просто не определяется как допустимый синтаксис. - person XCS   schedule 16.05.2016{a: 1, b: 2}[a]
не работает. Здесь{
…}
— это блок, а не объект. Это потому, что{
интерпретируется как оператор, а не как выражение.({a: 1, b: 2})[a]
или({a: 1, b: 2}[a])
работают, потому что(
…)
заставляет интерпретировать{
…}
как выражение (объект). То же самое и с функциями, потому что есть функциональные операторы и функциональные выражения. Почему? Потому что именно так был разработан JavaScript. - person Sebastian Simon   schedule 16.05.2016