javascript没有嵌套的函数范围扩大

时间:2015-01-14 02:54:07

标签: javascript scope

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

其中cool是一个接受函数的函数。这段代码运行得很好。我怎么能做这个工作呢?

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

我想这样做是因为bar是来自foo等函数的常用函数。有没有办法进一步开放范围,以便bar能够b看到foo

1 个答案:

答案 0 :(得分:3)

bar作为参数的函数中包装b:即

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

function foo(b)
{
    return cool(baz(b));
}