[2,‘asde’,{a1:‘value1’,a2:123,0:12,1:‘asde’}]+{b1:‘abc’,5:34}
“2,asde,[object Object][object Object]”
[2,‘asde’,{a1:‘value1’,a2:123,0:12,1:‘asde’}]+{b1:‘abc’,5:34}
“2,asde,[object Object][object Object]”
You can’t add a list and an object.
ok bro, can you explain further what is happening by adding a array(containing object) with object
It’ll throw an error, because
Maybe you want .push({ … }) (or .concat([{ … }])) to add an object to the array?
@M-Michelini As you can see, it was added.
@osumami It is because of type conversions. You can go through this article to understand what is happening behind the scenes: Type Conversions
In your example, you are adding array and object. It is different types of data, so JS will covert it to one type and add them. It takes the first argument of your sum function(array) and converts it to a string, then it converts the object to a string([object Object]
is a string representation of the object) and then sums 2 strings.
bro just explain me why javascript handle addition of array and object as string, also why object are shown in square brackets
My mistake, tried copying this into my terminal but the apostrophe’s don’t copy and paste properly from the forum :S
The addition operator only works with Strings and Numbers, so when you try to add something that isn’t a string or a number, it will convert it to a string so it can perform the operation.
The default conversion from an object to string is "[object Object]"
.
JavaScript attempts to do what you’re trying to do even though it doesn’t make sense. The only way it can complete the operation is if it converts the objects to strings then joins those strings together. Note an array is a type of object as well.
Objects all have a method called toString
which is used to do the conversion. Different objects have different results when the method is called:
The capitalised first word you can read as being the specific type of object, the second is the general type, so [Object object]
is an object of type Object (ie it has no special defined type, it’s just the one you get out-of-the-box).