如何从JavaScript中的另一个外部函数访问嵌套的内部函数?

时间:2015-01-05 01:32:30

标签: javascript

请查看以下JavaScript代码段。这与javascript中的函数范围和提升有关。我无法调用window.innermost(),因为它未定义,因为它不在范围内。

除了将其附加到Windows对象之外,任何人都知道另一种方式。在这种情况下,Windows对象仍无法正常工作。

function outer(){
    function callback() { 
        window.innermost = function() {
            alert("hello from inner most")
        }
    }
}

(function caller() {
     window.innermost();  // this is undefined
}());

1 个答案:

答案 0 :(得分:4)

您必须同时调用外部和回调:

function outer(){
    var callback = function() { 
        window.innermost = function() {
            alert("hello from inner most")
        }
    }
    callback(); // Call Callback
}
outer(); // Call outer

(function caller() {
     window.innermost();  // should work
}());

如果 之前,则运行匿名函数,则window.innermost不会被定义(或者如果未定义{你会)。

另外,请注意我将callback设置为变量,这是在函数中定义函数的另一种方法。