如何使变量进入javascript函数内部?

如何使变量进入javascript函数内部?,javascript,Javascript,我在一个范围内得到了这个函数: AjaxState.prototype.run_on_finish = function(callback){ if (this.isRunning()){ setTimeout('AjaxState.obj().run_on_finish('+callback+')', 250); }else{ callback(); } } 我只是检查是否所有ajax都完成了,然后在调用回调之后(如果所有ajax都完成

我在一个范围内得到了这个函数:

AjaxState.prototype.run_on_finish = function(callback){
    if (this.isRunning()){
        setTimeout('AjaxState.obj().run_on_finish('+callback+')', 250);
    }else{
        callback();
    }
}
我只是检查是否所有ajax都完成了,然后在调用回调之后(如果所有ajax都完成了)。。。 但是,在另一点上,我尝试使用如下函数调用:

//.obj()只是调用singleton模式

function foo(){
 var id = 2;
 AjaxState.obj().run_on_finish(function(){
  makeThings(id);
 });
}();
当我执行此操作时,我收到消息“id未定义”,因为我认为“run_on_finish”只是在全局范围内查找它,如果我从id中删除“var”,它会工作。。。但我不想让它成为全局的,我想通过函数发送它,这可能吗?

试试这个:

function foo() {
var id = 2;
    AjaxState.obj().run_on_finish(
      (function(id) {
        var sub_id = id;
        return function() {
          makeThings(id);
        };
      })(id));
}

搞笑的问题标题
:)
整个
完成后运行
的事情毫无意义。为什么不使用基于事件的回调,即钩住
readystatechange
事件?您的示例必须不完整。提供真实的代码。在您给出的示例中,
id
被有效地关闭到
run\u on\u finish
回调中。这个额外关闭的目的是什么?@katspaugh将id从父函数foo中获取到传递到
run\u on\u finish
的函数中。“我做错了吗?”KATSPOW考虑加入你自己的答案: