Javascript 如何在变量的闭包中调用函数?

Javascript 如何在变量的闭包中调用函数?,javascript,ajax,debugging,firebug,Javascript,Ajax,Debugging,Firebug,我是java的新手,但代码在下面的解释中 这是一个游戏的代码,但问题是:使用navigator函数,我在游戏中单击navigator,然后某种(ajax?)继续,它就会被记录下来。但是,当我使用FireBug控制台时,我无法发送返回线上有函数的消息。 基本上。。ThisFunction.*显示的唯一函数是底部返回的函数。如何调用Navigator函数?我试过: ThisFunction.a.navigator(此处为args) ,但它说a是未定义的。。它也不会显示在自动完成列表中 **我删除了代

我是java的新手,但代码在下面的解释中 这是一个游戏的代码,但问题是:使用navigator函数,我在游戏中单击navigator,然后某种(ajax?)继续,它就会被记录下来。但是,当我使用FireBug控制台时,我无法发送返回线上有函数的消息。 基本上。。ThisFunction.*显示的唯一函数是底部返回的函数。如何调用Navigator函数?我试过: ThisFunction.a.navigator(此处为args)

,但它说a是未定义的。。它也不会显示在自动完成列表中


**我删除了代码,因为它来自游戏。谢谢你的帮助**

根据
OTHERFUNCTIONSHERE
是什么,如果它们关闭变量
a
(顺便问一下,为什么会有这样神秘的变量名?),您可以从其中一个函数中访问它。否则,它就超出了范围。

你用这个钻头把它钉在了头上:

ThisFunction.*显示的唯一函数是底部返回的函数

这就是语言预期的、有目的的功能

简短回答:您必须从关闭中返回任何您希望从外部访问的内容。。。这可能是一个变量,也可能是一个api,它可以自己访问变量,同时保持外部私有。这就是所谓的词汇范围界定,它是你的朋友

示例时间:

var ThisFunction = (function() {
  var a = { navigator: "woot" };
  var b = function() {
    return a;
  }
});
ThisFunction.a; //a is null/undefined on the returned
ThisFunction.b; //b is defined yay
var aOUTSIDE = ThisFunction.b();
aOUTSIDE.navigator; // "woot"


因此,在A中唯一可以得到的东西是与A在同一“范围”内的var。因此,要么返回范围外的函数,要么从范围内返回一些函数,这些函数提供了一个API来获取或执行A的一些内部函数…

如果您使用的是Firebug,
ThisFunction。%A.navigator(…args)
应该可以工作(
%
是该语言的一部分)。但正如其他答案中所指出的,纯JavaScript是不可能的。

在游戏中,当我单击导航器时,该函数被访问,但它如何被其他甚至不在返回或该函数中的函数访问谢谢,我终于找到了答案。复杂的权限把我推了回去。酷,很高兴你得到了它。每当你遇到这样的问题,检查范围。。。这是语言的一个特性,您无法窥视另一个作用域(不在父作用域树中)。。。因此,如果您需要查看一个范围,那么您需要要么返回该内容,要么返回一个访问器API等等;与
a
在同一范围内声明的任何函数都可以访问
a
(和
a.navigator
),因此,如果其中一个函数位于
其他函数中,您可以从那里访问它。我明白了。。有一个日志函数,看起来它也执行命令。“关闭”是什么意思?一个“关闭”是一个函数,它“关闭”了定义它的范围,这意味着它可以访问该范围。