传递一个变量到一个函数的函数

传递一个变量到一个函数的函数

问题描述:

我想下一个等级的变量传递到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。因此,您不需要将它作为参数传递给内部函数。相反,如果你有内部函数的形式参数,它会隐藏捕获的变量并使内部函数不可访问。

+0

您可以添加一两行来解释*为什么*这可以解决问题? – Krease 2013-02-24 17:57:57

+0

我现在也知道,但为什么通过它获得消除变量? – 2013-02-24 17:58:36

+0

@JasonBurgett变量阴影。 – 2013-02-24 17:58:51