Прочитать агрументы из замыкания
Всем привет.
Подскажите, как прочитать arguments функции secondFunс? Напрямую понятно можно обратиться, а если будет передано неизвестное кол-во аргументов, как перебрать их?
function secondFunc(a, b) {
return function(c, d){
for( let i=0; i<arguments.length; i++ ){
console.log(arguments[i]);
}
return a + b + c + d;
}
}
function mainFunc(second) {
return second(1,2);
}
console.log( mainFunc( secondFunc(3,5) ) );
|
RuBrain, вы в своем коде разве не получаете все переданные аргументы в функцию(4-я строка)?
В чем вопрос? |
Цитата:
function secondFunc(a, b) {
var prm=[];
for( let i=0; i<arguments.length; i++ ){
prm[i]=arguments[i]
};
return function(c, d){
for( let i=0; i<prm.length; i++ ){
alert(prm[i]);
}
return a + b + c + d;
}
}
function mainFunc(second) {
return second(1,2);
}
alert( mainFunc( secondFunc(3,5) ) );
|
Понятно, т.е. никакого объекта нету посмотреть наружу.
|
Цитата:
Тебе нужно не известно что... У функции для этого есть специальный объект - arguments. Ты его хочешь видеть внутри еще одной функции, у которой есть свой arguments... Ясное дело, что "первый" arguments нужно "скопировать" в другой массив или объект. Дабы не упоминать arguments в суе. :D Какой тебе еще "специальный" объект нужен? |
Цитата:
function secondFunc(...args) {
return function(){
const allArgs = [...arguments, ...args];
console.log(allArgs);
return allArgs.reduce((m, v) => m + v, 0);
}
}
function mainFunc(second) {
return second(1,2);
}
console.log(mainFunc(secondFunc(3,5)));
Цитата:
function secondFunc() {
const args = arguments;
return function(){
const allArgs = [...arguments, ...args];
console.log(arguments);
console.log(args);
return allArgs.reduce((m, v) => m + v, 0);
}
}
function mainFunc(second) {
return second(1,2);
}
console.log(mainFunc(secondFunc(3,5)));
|
Цитата:
Такого в JS никогда не будет. В разы ухудшится быстродействие увеличится затраты по памяти за сомнительный плюс ссылки на [[scope]] на каждую смену области видимости(вызов функции). |
| Часовой пояс GMT +3, время: 08:46. |