传递一个变量到一个函数的函数
问题描述:
我想下一个等级的变量传递到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函数中还有多少级别可用?
答
只是删除你的内部函数
function file_copy_progress(directory){
console.log("stage 1 " + directory);
setInterval(function(){
console.log("stage 2 " + directory);
}, 1000);
}
外部函数的参数directory
在内部功能的关闭被捕获的形式参数directory
。因此,您不需要将它作为参数传递给内部函数。相反,如果你有内部函数的形式参数,它会隐藏捕获的变量并使内部函数不可访问。
您可以添加一两行来解释*为什么*这可以解决问题? – Krease 2013-02-24 17:57:57
我现在也知道,但为什么通过它获得消除变量? – 2013-02-24 17:58:36
@JasonBurgett变量阴影。 – 2013-02-24 17:58:51