JavaScript не жалуется, если вы вызываете функцию с неправильным количеством аргументов. Если аргументов передано меньше, чем объявлено, дополнительные параметры имеют значение undefined
. Если их больше, их просто игнорируют. Это особенность, а не ошибка!
Внутри функции JavaScript у вас есть доступ к значению arguments
, которое представляет собой массивную структуру, содержащую все переданные ей аргументы. Если бы вы захотели, вы могли бы определить все свои функции, чтобы принять 0 параметров и использовать arguments[0]
, arguments[1]
и т. Д. Вместо названных параметров, которые вы ранее имели (хотя я не понимаю, почему это можно было бы сделать), и функции все равно будут работать точно так же ,
Преимущества наличия этой arguments
структуры и никаких ограничений на сколько аргументов вы вызываете функцию с позволяете делать очень мощные вещи, как связывает polyfill здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
Я только что протестировал на домашней функции ... похоже, что javascript не выдает ошибку при передаче параметра там, где он не нужен или не определен в сигнатуре функции. –