TLDR:
Да, это разрешено.
Как это работает
Все функции в js имеют доступ к локальной переменной с именем arguments
. Переменная arguments
- это массивоподобный объект (который выглядит как массив, но не является экземпляром класса Array
), содержащий все аргументы, переданные функции. Это в основном механизм js, поддерживающий переменные аргументы.
Пример:
function a () {
for (x=0; x<arguments.length); x++) {
console.log(arguments[x]);
}
}
В дополнение к тому, что вы можете передавать больше аргументов, чем определено функцией js, вы также можете передавать меньше аргументов, чем требуется для функции. Аргументы, которые вы не передаете, просто получают значение undefined
.