Вы используете arguments
внутри внутреннего function*
, который немедленно вызывается без аргументов, поэтому arguments
пустые, поэтому повторение по нему приводит к тому, что возвращаемый набор будет пустым , Вместо этого я бы использовал синтаксис параметра rest во внешней функции для сбора аргументов в правильный массив, а затем вы можете выполнить итерацию по массиву:
(Откройте консоль браузера, а не консоль фрагмента, чтобы увидеть результат Set
:)
const set1 = new Set(['1', '2', '3']);
const set2 = new Set(['4', '5', '6']);
const set3 = new Set(['7', '8', '9']);
const mergeSets = (...sets) => new Set(function* () {
for (const set of sets) yield* set;
}());
console.log(
mergeSets(set1, set2, set3)
);