2015-09-10 7 views
2

Это работает:Почему "{} || {}" вызывает синтаксическую ошибку?

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 и хром.

+6

Когда '' {первый маркер в новом заявлении, анализатор ожидает увидеть блок (соединение) заявление; список операторов внутри '{}'. В первом примере первый токен в инструкции - 'var', поэтому' {'интерпретируется как начало выражения инициализатора объекта. – Pointy

ответ

5

Javascript считает, что фигурные скобки являются кодовым блоком. Попробуйте это:

({} || {}); 
3

Потому что в {} || {};, первый {} является не интерпретируется как [пустой] объекта. Он интерпретируется как block statement.

Попробуйте это:

({}) || {}; 
Смежные вопросы