Javascript:访问函数b()中函数a()的子函数

Javascript:访问函数b()中函数a()的子函数,javascript,function,Javascript,Function,我有以下Javascript代码,正在尝试 在函数b()中访问函数a()的子函数,有人能告诉我如何实现这一点吗 function a() { function a1(pos) { // code // return some value } } function b() { if (condition) { // call a1 var value = a(a1('side')); } } 目前

我有以下Javascript代码,正在尝试 在函数b()中访问函数a()的子函数,有人能告诉我如何实现这一点吗

function a() {

    function a1(pos) {
        // code
        // return some value
    }
}

function b() {
    if (condition) {
        // call a1
        var value = a(a1('side'));
    }
}
目前尝试这种方式会给我一个错误,a1是未定义的

我理解它与我们的关系,所以有人可以对这些事情做些解释,因为我在网上试过,但找不到令人满意的解释

a。调用函数的语法


b。功能范围

这是不可能的,因为a1功能超出范围。要使用a1,必须将其提取到与其他函数相同的“级别”,从而将其纳入范围。大概是这样的:

function a1(){...}

function a(){a1(); ...}

function b()
{
    if(condition)
    {
        a1();
        ...
    }    
}

这是不可能的
a1
位于闭包内部,无法在
a
@elclanrs外部访问它:它与函数的局部范围有关,而不是闭包。a)通过在引用函数后添加
()
来调用函数。例如
func()。b) 函数可以访问在其自身范围内定义的任何符号,或者可以在其定义的范围内访问的任何符号(闭包)。如前所述,无法从
a
外部访问
a1
,因为
a1
是函数的本地。但即使你想让它全球化,在你试图调用
a1
的那一刻,它仍然不存在。@FelixKling:嗯,是的,我想这里就是这样。这都是关于语义的,因为在JS中有点像
scope==closure==function
…感谢@elclars和Felix澄清了我的想法,在这里找到了解决方法[]。