Javascript:访问函数b()中函数a()的子函数
我有以下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')); } } 目前
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澄清了我的想法,在这里找到了解决方法[]。