Это работает:Почему "{} || {}" вызывает синтаксическую ошибку?
var a = {} || {};
Хотя это не делает:
{} || {};
Uncaught SyntaxError: Unexpected token ||
at Object.InjectedScript._evaluateOn (<anonymous>:905:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:838:34)
at Object.InjectedScript.evaluate (<anonymous>:694:21)
Почему? Проверено на ff и хром.
Когда '' {первый маркер в новом заявлении, анализатор ожидает увидеть блок (соединение) заявление; список операторов внутри '{}'. В первом примере первый токен в инструкции - 'var', поэтому' {'интерпретируется как начало выражения инициализатора объекта. – Pointy