2017-05-16 31 views
0

我在我的控制器中执行以下功能,我不理解为什么我无法从其他函数调用函数B为例,所以我得到了下面的代码:调用的函数,而在函数内部的控制器

respond: function() { 
       var z; 
       var that = this; 
       var y = 10; 

        function a() { 
         //do something 
          } 

        function b() { 
         //do something 
          } 
        function c() { 
         //do something 
          } 

    } 

,现在我尝试这样做:

respond: function() { 
       var z; 
       var that = this; 
       var y = 10; 

        function a() { 
         //do something 
          } 

        function b() { 
         //do something 
          } 
        function c() { 
         //do something 
          } 

    }, 

    onButtonPress: function(){ 
     respond.b; 
    }, 

,但这不能正常工作有人可以解释我为什么?

+0

你能分享的例子的完整代码,我不能得到什么定时器变量是在哪里它被定义。无论如何timer.b它不执行该功能,可能是你错过了括号? timer.b(); –

+0

对不起,应该是respond.b; – Nali

回答

3

在声明函数它成为局部范围,即私有的功能它被声明。
如果你想让它提供你必须要么通过返回它或将它赋值给一个变量导出该函数外/对象属性,可在函数外部使用。

返回:

respond: function() { 
    function b() { 
    //do something 
    } 

    return b; // Single function 
} 

respond: function() { 
    function a() { 
    //do something 
    } 
    function b() { 
    //do something 
    } 
    function c() { 
    //do something 
    } 

    // Object containing multiple functions 
    return { 
    a: a, 
    b: b, 
    c: c 
    }; 
} 

勘定:

respond: function() { 
    function b() { 
    //do something 
    } 

    window.b = b; 
} 
+0

所以如果你想在函数main中调用函数b,你会怎么做,通过返回它可以提供一个示例代码?我主要缺乏理解的地方是我在哪里放置返回语句,在函数b本身或主函数的末尾 – Nali

+0

@Nali主函数,我将用示例更新我的答案 –

+0

我看到我可能会让你困惑有些术语只是为了澄清当我谈论主要功能时,我的意思是我的例子中的回应功能,我编辑了希望你能找到我 – Nali