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

How do you access an nested inner function from another outer function in JavaScript?

本文关键字:访问 函数 嵌套 内部函数 外部 另一个 JavaScript      更新时间:2023-09-26

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

除了将其附加到窗口对象之外,任何人都知道另一种方法。在这种情况下,Windows 对象仍然不起作用。

function outer(){
    function callback() { 
        window.innermost = function() {
            alert("hello from inner most")
        }
    }
}
(function caller() {
     window.innermost();  // this is undefined
}());

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

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设置为变量,这是在函数中定义函数的另一种方法。