【问题标题】:Calling function nested in other function with callback使用回调调用嵌套在其他函数中的函数
【发布时间】:2016-01-10 17:59:22
【问题描述】:

我有这样的结构:

var obj = {
   first: function(callback)
   {
      /* some code */

      var foo = function()  // i want to invoke this by callback
      {
        /* some code*/
      };

      if (callback) callback();         
   },

   second: function()
   {  
     /* some code */

     var bar = function()
     {
        /*some code */
     };
     bar();

     obj.first.foo();  // i want to invoke foo(), when bar() finishes it's job
   }
}
obj.first();
obj.second();

当我尝试通过回调调用 foo() 时,我得到 Uncaught ReferenceError: foo is not defined

我在理解 JavaScript 作用域方面存在问题。当我完全处于其他函数中时,如何调用嵌套在外部函数中的内部函数?

【问题讨论】:

  • 你不能。这是一个内部函数。
  • 这是因为在调用 first 之前未定义 foo。通过简单地访问 first 属性,foo 没有被定义。如果您拨打first,然后拨打foo,它应该可以工作。编辑:实际上再三考虑,我认为foo 的范围不允许在first 之外调用它
  • 哦,我忘了-我在整个obj下面调用first()。所以这不是问题,我认为
  • 你的回调是第二个吗?

标签: javascript function object callback


【解决方案1】:

你不能调用你当前正在使用的函数。

你可以试试这样的:

var obj = somefunction;

somefunction{...}

【讨论】:

  • 如果你当前不在同一个函数中,递归只会在 javascript 中工作。
  • Not “在同一个函数中” 肯定会破坏整个递归过程,不是吗
  • var num = 0; var obj = function(num) { num++; console.log(num); if (num < 10) obj(num); } obj(num);你确定吗?
  • 你也许是对的,我没有那么多经验,我只知道我昨天大部分时间都在试图做到这一点,但没有成功。一旦我把它从功能中拉出来,它就成了一种魅力。
猜你喜欢
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
相关资源
最近更新 更多