Если вы наберете в консолистранное поведение Chrome Инструменты разработчика консоли
> new Object()
Пустой расслоение плотной объект появится в консоли, и ожидается, но если вы наберете
> {}
Вы undefined
Странно. Не так ли?
Если вы наберете в консолистранное поведение Chrome Инструменты разработчика консоли
> new Object()
Пустой расслоение плотной объект появится в консоли, и ожидается, но если вы наберете
> {}
Вы undefined
Странно. Не так ли?
Вызов функции с new
всегда приводит к значению. Теперь ваша вторая строка,
{}
- пустой блок кода, а не объект буква.
Try:
({})
или:
0,{}
Консоль разбирает линии, которые вы вводите в качестве заявления, а не выражения. Открытая фигурная скобка в начале инструкции является разделителем блоков, поэтому, а не началом литерала объекта. Включая другие токены, чтобы заставить синтаксический анализатор анализировать выражение, вы можете начать литерал объекта.
Хм. Теперь я понял: вот почему в случае массивов оба пути одинаковы (новый Array() или просто []). Но как js интерпретирует эту конструкцию 0, {}? –
Это выражение, включающее оператор запятой. Есть и другие способы сделать это: подумайте «0? 0: {} 'или' 0 || {} 'или' true && {} '. Ключ запускает выражение однозначно. – Pointy