我尝试将一个变量向下传递到一个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函数中可用?
答案 0 :(得分:7)
只需删除内部函数中的形式参数directory
function file_copy_progress(directory){
console.log("stage 1 " + directory);
setInterval(function(){
console.log("stage 2 " + directory);
}, 1000);
}
外部函数的directory
参数在内部函数的闭包中捕获。因此,您无需将其作为参数传递给内部函数。相反,如果你有内部函数的形式参数,它会隐藏捕获的变量并使内部函数无法访问它。