Разве плохо передавать больше аргументов, чем объявляет функция?
У меня есть функция
function callback(obj){...}
Можно ли передавать больше объектов, чем было объявлено в сигнатуре функции? например, назвать это так:
callback(theObject, extraParam);
Я попробовал это на Firefox, и у меня не было проблем, но плохо ли это делать?
2 ответа
JavaScript позволяет это, вы можете передать произвольное количество аргументов функции.
Они доступны в arguments
объект, который является массивоподобным объектом, который имеет числовые свойства, содержащие значения аргументов, которые использовались при вызове функции, length
свойство, которое сообщает вам, сколько аргументов было использовано при вызове, и callee
свойство, которое является ссылкой на саму функцию, например, вы можете написать:
function sum(/*arg1, arg2, ... , argN */) { // no arguments defined
var i, result = 0;
for (i = 0; i < arguments.length; i++) {
result += arguments[i];
}
return result;
}
sum(1, 2, 3, 4); // 10
arguments
объект может выглядеть как массив, но это простой объект, который наследуется от Object.prototype
, но если вы хотите использовать методы Array, вы можете вызывать их прямо из Array.prototype
Например, обычным шаблоном для получения реального массива является использование массива slice
метод:
function test () {
var args = Array.prototype.slice.call(arguments);
return args.join(" ");
}
test("hello", "world"); // "hello world"
Кроме того, вы можете узнать, сколько аргументов ожидает функция, используя length
свойство объекта функции:
function test (one, two, three) {
// ...
}
test.length; // 3
Да, сделайте это - это хорошая практика и мощная функция JavaScript