Ответ 1
Я предполагаю, что это ошибка в реализации FF.
В соответствии с 9.2.12 Раздел FunctionDeclarationInstantiation (func, argumentsList),
Если аргументыObjectNeeded истинны, то
a) Если strict является истинным или если simpleParameterList является ложным, то
== > i) Пусть ao CreateUnmappedArgumentsObject (argumentsList).
b) Else,
== > i) ПРИМЕЧАНИЕ. Объект сопоставленного аргумента предоставляется только для нестрогих функций, которые не имеют параметра rest, любых инициализаторов значений по умолчанию параметра или любых деструктурированных параметров.
== > ii) Пусть ao CreateMappedArgumentsObject (func, formals, argumentsList, env).
Оба CreateMappedArgumentsObject
и CreateUnmappedArgumentsObject
имеют
Выполните DefinePropertyOrThrow (obj, @@iterator, PropertyDescriptor {[[Value]]:% ArrayProto_values%, [[Writable]]: true, [[Enumerable] ]: false, [[Configurable]]: true}).
Это означает, что свойство @@iterator
должно быть определено на объекте arguments
.