2014-02-24 3 views
0

Без использования каких-либо действий, которые будут устаревать в ближайшее время, можно ли получить аргументы из функции, которая сама была передана как функция? .Аргументы функции, переданные как параметр

function lowerOrder(x) { 
    console.log('lower order: '); 
    console.log(arguments); 
} 
function higherOrder(fx) { 
    console.log('higher order: '); 
    console.log(arguments); 
}; 

higherOrder(lowerOrder); //in Chrome I can expand these results and see an arguments object (which is null) 

против

function lowerOrder(x) { 
    console.log('lower order: '); 
    console.log(arguments); 
} 
function higherOrder(fx) { 
    console.log('higher order: '); 
    console.log(arguments); 
}; 

higherOrder(lowerOrder(4)); //higher order function is undefined 
          //lower order correctly prints 4 

Если функция как lowerOrder (4) передается higherOrder, можно получить как имя функции, которая была передана и его аргументы из higherOrder?

+0

Нет, это невозможно. Для чего вы хотите использовать это? – Bergi

+2

В вашем втором примере 'lowerOrder' не передается' upperOrder'. Он вызывается и передается его возвращаемое значение. 'higherOrder' не знает, откуда взялось значение (как оно было вычислено). Вы можете найти это со статическим анализом кода, но не во время выполнения. –

+0

@ Bergi Я просто хотел узнать, возможно ли это. Я потратил около 20 минут, пытаясь найти способ и потерпел неудачу. – wootscootinboogie

ответ

2

Нет, и причина проста: во втором коде вы не проезжаетеlowerOrder до higherOrder.

Вместо этого, вы передаете lowerOrder «s возвращаемого значения, которое undefined, потому что он не имеет return заявления.

+0

пятно на, я был слишком обеспокоен тем, можно ли увидеть лес для деревьев. – wootscootinboogie

Смежные вопросы