Прочитать агрументы из замыкания
Всем привет.
Подскажите, как прочитать 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, время: 04:08. |