将变量传递给函数内的函数

时间:2013-02-24 17:53:54

标签: javascript

我尝试将一个变量向下传递到一个setInterval函数,我的代码看起来像这样:

function file_copy_progress(directory){
    console.log("stage 1 " + directory);
    setInterval(function(directory){
        console.log("stage 2 " + directory);
    }, 1000);
}

然后我称之为:

file_copy_progress("/home/user/tmp/test");

控制台中的结果是:

stage 1 /home/user/tmp/test
stage 2 undefined
stage 2 undefined
stage 2 undefined
...

我如何将directory变量再向下传递一个以便在setIntervall函数中可用?

1 个答案:

答案 0 :(得分:7)

只需删除内部函数中的形式参数directory

function file_copy_progress(directory){
    console.log("stage 1 " + directory);
    setInterval(function(){
        console.log("stage 2 " + directory);
    }, 1000);
}

外部函数的directory参数在内部函数的闭包中捕获。因此,您无需将其作为参数传递给内部函数。相反,如果你有内部函数的形式参数,它会隐藏捕获的变量并使内部函数无法访问它。