2

我试图将一个变量向下传递到一个 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 函数中可用?

4

1 回答 1

7

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

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

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

于 2013-02-24T17:55:42.460 回答