2015-01-14 4 views
0
function foo(b) 
{ 
    return cool 
    (
     function(x) 
     { 
      if(x) 
      { 
       b(x); 
      } 
     } 
    ); 
} 

где cool - функция, которая принимает функцию. Этот код работает достаточно хорошо. Как я могу сделать эту работу?javascript расширение расширенной функции не вложенных функций

function bar(x) 
{ 
    if(x) 
    { 
     b(x); 
    } 
} 
function foo(b) 
{ 
    return cool(bar); 
} 

Я хочу, чтобы это сделать, потому что bar является часто используемой функцией от функций, как foo. Есть ли способ открыть область дальше, чтобы bar мог видеть b от foo?

+0

К сожалению, у меня нет доступа к 'cool' функции. О, хорошо, что стоило спросить. –

+0

А, я неправильно читаю код, пожалуйста, не обращайте на это внимания. Я думал, что вы возвращаете функцию под названием «cool». Посмотрите на ответ Дэниела ниже. –

ответ

3

Wrap bar в функцию, которая принимает b в качестве аргумента: т.е.

function baz(b) 
{ 
    return function(x){ 
     if(x) 
     { 
      b(x); 
     } 
    } 
} 

function foo(b) 
{ 
    return cool(baz(b)); 
} 
Смежные вопросы