2013-02-24 114 views
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函數中還有多少級別可用?

回答

7

只是刪除你的內部函數

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

相關問題