Распространение любого «пустого» значения в объекте допустимо (не выдает ошибку, а вместо этого становится неактивным):
{
...undefined,
...null,
...false,
...true,
...'',
...{},
...[],
...Symbol(),
...() => {},
} // evaluates to {}
Но выполнение того же в массиве приводит к ошибкедля всех вышеперечисленных значений, кроме ''
и []
.В сообщении об ошибке говорится, что значения, которые не работают, не являются итеративными, однако они явно и итерируемы в том смысле, что их можно распространить на объект.Разумеется, интуитивно понятно, что строки, массивы и объекты могут быть преобразованы в пары «записи / ключи-значения» при распространении в объект и преобразованы в значения при распространении в массив, но даже в этом случае зачем нужны записи всех этихзначения будут итеративными, но значения не будут?Если записи являются итеративными, разве значения не должны быть такими же?Это просто причуда разных движков JavaScript?Что здесь происходит?