Можешь ли ты объяснить оператор распространения (`...`) в JavaScript, включая его основные случаи использования, такие как копирование и объединение массивов и объектов, а также передача элементов массива как аргументов функции? — ДейлиПреп