2012-03-22 2 views

ответ

6

Вызов функции с new всегда приводит к значению. Теперь ваша вторая строка,

{} 

- пустой блок кода, а не объект буква.

Try:

({}) 

или:

0,{} 

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

+0

Хм. Теперь я понял: вот почему в случае массивов оба пути одинаковы (новый Array() или просто []). Но как js интерпретирует эту конструкцию 0, {}? –

+2

Это выражение, включающее оператор запятой. Есть и другие способы сделать это: подумайте «0? 0: {} 'или' 0 || {} 'или' true && {} '. Ключ запускает выражение однозначно. – Pointy

Смежные вопросы