Javascript从内部调用嵌套函数

Javascript从内部调用嵌套函数,javascript,function,methods,nested,closures,Javascript,Function,Methods,Nested,Closures,如果我运行以下命令 function outer(){ function inner(){ } inner(); } function outer(){ function inner(){ inner(); } inner(); } 内部将按预期第一次运行 如果我尝试运行以下命令 function outer(){ function inner(){ } inner(); } function

如果我运行以下命令

function outer(){
    function inner(){
    }

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

    inner();
}
内部将按预期第一次运行


如果我尝试运行以下命令

function outer(){
    function inner(){
    }

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

    inner();
}
inner将按预期第一次再次运行,但在任何后续尝试中失败,返回错误:ReferenceError:inner未定义


如果我将函数公开到全局命名空间,它将再次工作

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

    window.inner = inner;
    inner();
}

是否有一种方法可以在不将嵌套函数添加到全局名称空间的情况下从其自身引用该函数?

您可以将该函数分配给执行范围内的局部变量

function outer() {
    var inner;

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

可以将函数分配给执行范围内的局部变量

function outer() {
    var inner;

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

嗯,我仍然收到“内部未定义”错误消息。如果有区别的话,我是从内部的setTimeout调用内部的。您是否使用setTimeout的引号?你不需要,你只需要传递任何函数实例就可以了!非常感谢,杰拉德!嗯,我仍然收到“内部未定义”错误消息。如果有区别的话,我是从内部的setTimeout调用内部的。您是否使用setTimeout的引号?你不需要,你只需要传递任何函数实例就可以了!非常感谢,杰拉德!