2015-06-12 27 views
0

調用嵌套函數。如果我運行下面...的Javascript從自身內部

function outer(){ 
    function inner(){ 
    } 

    inner(); 
} 

內將運行在第一時間預期。


如果我再嘗試運行以下...

function outer(){ 
    function inner(){ 
     inner(); 
    } 

    inner(); 
} 

內將再次按預期運行,但隨後未能在任何後續嘗試,返回錯誤的第一次:的ReferenceError:內沒有定義


如果我揭露功能全局命名空間將再次工作...

function outer(){ 
    function inner(){ 
     inner(); 
    } 

    window.inner = inner; 
    inner(); 
} 

有沒有辦法從本身內部引用嵌套函數而無需將其添加到全局命名空間?

回答

4

可以執行範圍

function outer() { 
    var inner; 

    inner = function() { 
     inner(); 
    } 
    inner(); 
} 
+0

HM,我仍然接收「內沒有定義」錯誤消息內的功能分配給一個局部變量。如果這有所作爲,我會從內部的setTimeout調用內部函數。 – Madness

+0

您是否在使用setTimeout引號?你不需要,你可以傳遞任何函數實例。 –

+0

這樣做!非常感謝Gerard! – Madness