When I try to merge two objects using the spread operator conditionally, it works when the condition is true or false:
let condition = false;
let obj1 = { key1: 'value1'}
let obj2 = {
key2: 'value2',
...(condition && obj1),
};
// obj2 = {key2: 'value2'};
When I try to use the same logic with Arrays, it only works when the condition is true:
let condition = true;
let arr1 = ['value1'];
let arr2 = ['value2', ...(condition && arr1)];
// arr2 = ['value2', 'value1']
If the condition is false an error is thrown:
let condition = false;
let arr1 = ['value1'];
let arr2 = ['value2', ...(condition && arr1)];
// Error
Why is the behaviour different between Array and Object?
(condition && arr)as well?{ ...null }and{ ...undefined }won't throw error either. So, we can forgo that check as well if we are unsure if an object has value or notBoolean.prototype[Symbol.iterator] = function* () {}(obviously don't do this in production code, it's a mere curio)condition ? [...arr1, ...arr2] : arr1or is this just a question on how the language works?