I noticed a strange behavior for Object.assign in the following case.
function func1(idx, list) {
list.forEach((item, i) => {
if (i === idx) {
console.log(Object.assign({}, {"key3": "value3"}, item));
return Object.assign({}, {"key3": "value3"}, item);
}
});
}
console.log(func1(0, [{"key1": "value1", "key2": "value2"}]));
The output is
{
"key3": "value3",
"key1": "value1",
"key2": "value2"
}
undefined
Rather than
{
"key3": "value3",
"key1": "value1",
"key2": "value2"
}
{
"key3": "value3",
"key1": "value1",
"key2": "value2"
}
When the forEach is changed to for, the output is as expected
function func2(idx, list) {
for(let i = 0; i < list.length; i++){
let item = list[i];
if (i === idx) {
console.log(Object.assign({}, {"key3": "value3"}, item));
return Object.assign({}, {"key3": "value3"}, item);
}
}
}
console.log(func2(0, [{"key1": "value1", "key2": "value2"}]));
Any explanation?