что будет, если я буду использовать оператор сложения между двумя объектами - PullRequest
2 голосов
/ 02 июля 2019

Я начинающий в javascript, я хочу, что произойдет, если добавить два объекта с помощью оператора сложения.

var obj = { name: "mango" }
var obj2 = { name: "mango" }
var obj3 = obj + obj2
console.log(obj3)

Ответы [ 3 ]

1 голос
/ 02 июля 2019

Оператор сложения проходит серию шагов, чтобы выяснить, что делать в зависимости от его операндов.

Прежде всего, он попытается преобразовать свои операнды в примитивы, а затем обработать результат. Когда объект преобразуется в примитив, он становится строкой, числом, логическим значением и т. Д., В зависимости от реализации объекта toString и / или valueOf , Если он заканчивается двумя строками, он объединяет их. Если нет, он преобразует примитивы в числа и добавляет их математически.

Простой объект (такой как в вашем коде) конвертируется в строку "[object Object]". Итак, ваш результат состоит в том, что строка соединена сама с собой: "[object Object][object Object]":

var obj = {name:"mango"};
var obj2 = {name:"mango"};
var result=obj+obj2; // It's not an object, so I called it `result`
console.log(result);

Некоторые объекты вместо этого преобразуются в числа или другие примитивы из-за реализации toString и / или valueOf. Как я уже говорил выше, если объект преобразуется в примитив, отличный от строки или числа, оператор сложения преобразует примитив в число. Например:

const a = {
  value: true,
  valueOf() {
    return this.value;
  }
};
const b = {
  value: 41,
  valueOf() {
    return this.value;
  }
};
const result = a + b;
console.log(result); // 42

В этом примере a преобразуется в примитив true (логическое значение), а b преобразуется в число 41. Поскольку это не обе строки, оператор сложения преобразует их в числа (41 уже является числом, true преобразуется в 1) и складывает их вместе, получая 42.

0 голосов
/ 02 июля 2019

Здесь переменная obj & obj2 содержит объект JSON

var obj = {name:"mango"}
var obj2={name:"mango"}
var obj3=obj+obj2

С учетом вышеприведенного кода, вывод будет

[object Object][object Object]

На самом деле оператор + фактически объединяет две или более переменных.

var obj = "mango"
var obj2 = "mango"
var obj3 = obj + obj2 

Выход есть,

mangomango
0 голосов
/ 02 июля 2019

Выполнение console.log (obj3) запишет результат.Как видите, он возвращает оба объекта в следующем формате: [object Object][object Object].Обратите внимание, что это не новый объект, эти возвращаемые объекты являются ссылками на старые объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...