var sum = function(person) {
arguments[0] = 'Аргумент [0]';
arguments[1] = 'Аргумент [1]';
arguments[2] = 'Аргумент [2]';
console.log(arguments[0]);
console.log(arguments[1]);
console.log(arguments[2]);
console.log(person);
console.log(arguments.length);
}
sum('person');
почему кол-во аргументов выводит 1?
Это псевдомассив, т. е. у него есть числовые ключи и свойство length
.
Но всё же это не массив, который следит за своим length
, поэтому это свойство проставляется один раз при создании.
Если есть необходимость, работать с псевдо-массивом arguments как с обычны "list array", то можно использовать методы прототипной связи конструктора Array с вызовом в конексте псевдо-массива.
var sum = function(person){
/*
Array.prototype.splice.call(arguments,0, 1, 'Аргумент [0]', 'Аргумент [1]', 'Аргумент [2]');
*/
Array.prototype.splice.apply(arguments, [0, 1].concat('Аргумент [0]', 'Аргумент [1]', 'Аргумент [2]'));
/*
arguments[0] = 'Аргумент [0]';
arguments[1] = 'Аргумент [1]';
arguments[2] = 'Аргумент [2]';
*/
console.log(arguments[0]);
console.log(arguments[1]);
console.log(arguments[2]);
console.log(person);
console.log(arguments.length);
}
sum('person');
Потому-что arguments - это псевдо-массив, содержащий аргументы функции (зарезервированное слово)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Имеется попап, который на момент запуска кода еще не существует в DOM и добавляется он туда только при определенных действиях пользователя...
У меня есть массив объектов, мне нужно менять active на true в каждом объекте по индексу