{} + [] - почему это 0 или [объект объекта]?

Если вы открываете консоль JS в своем браузере (в моем случае Chrome) и введите:

{} + []

вы получите 0, но когда вы введете

console.log({} + [])

вы получаете [object Object]... любые идеи, почему результат отличается? Я всегда думал, что когда вы вводите там, он всегда завершает его с помощью console.log?

Ответы

Ответ 1

{} может быть либо пустым, либо пустым литералом объекта в зависимости от контекста.

+ может быть либо унарным плюсом, либо оператором конкатенации в зависимости от контекста.

Первый пример кода - это пустой блок, который также не может быть там, что делает выражение таким же, как +[], что означает "Пустой массив, преобразованный в число".

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

Ответ 2

Когда вы видите символ {} в начале, он интерпретируется как пустой литерал объекта block или empty (при создании объектов).

Когда вы используете оператор expression или , + представляют оператор плюс, который coerces его операнд (в данном случае это будет []) для a номер.

Итак, +[] совпадает с Number([]), который оценивается как 0.

Оператор unary plus внутренне использует абстрактную операцию ToNumber.

Подробнее о Преобразования типов и операторы.

console.log(Number([]));

Ответ 3

Пустой объект как {} возвращает "[object Object]", когда вы вызываете его метод toString(). Пустой массив возвращает "", когда вы вызываете его метод toString(). Таким образом, console.log({} + []) выведет "[object Object]"

Ответ 4

это потому, что {} - это обозначение объекта, так что все, что вы конкатенируете с {}, даст вам [объект Object]. Я ваш случай [] пуст, поэтому он просто показывает объект объекта. поэтому, если вы можете попробовать следующее, вы получите то, что хотите.

 console.log({} + 5);
 [object Object]5  ///console shows 
      //And
console.log({} + "test");
VM65:1 [object Object]test //console shows