调用JavaScript中另一个函数内部的函数

时间:2014-05-19 12:22:48

标签: javascript

我想调用另一个函数中 的函数。

函数示例:

function funcOne() {
     function funcTwo() {    // i want to call to this function
         //do something
     }
}

当我点击这两个功能 之外的按钮时,我需要拨打funcTwo功能

我该怎么做?

4 个答案:

答案 0 :(得分:2)

不,除非您退回该功能,否则无法致电。

Function2对function1是私有的。

你使用

function funcOne() {
    return {
     funcTwo :function() {    // i want to call to this function
         //do something
     }
   }
}

编辑:构建代码

function funcOne() {
   var funcTwo = function() {    // private function
        //do something
     }
    return {
      funcTwo : funcTwo      
   }
}

现在您可以将其命名为:

funcOne().funcTwo()

答案 1 :(得分:1)

正如您在示例中定义的那样,您不能。 funcTwo的范围限定在funcOne内,因此只能从funcOne内部调用。您可以将funcTwo分配给范围在funcOne之外的变量,该变量可以正常工作:

var funcRef;
function funcOne() {
    funcRef = function funcTwo() {

    }
}

在这种情况下,funcRef会保留一个引用并可以使用,但该引用仅在funcOne执行后设置。

答案 2 :(得分:1)

阅读一些Douglas Crockford可能有助于您理解......

尝试重新编码为:

function funcOne() {
   this.funcTwo = function() {
   }
}

我认为您必须声明一个funcOne对象的实例,然后调用该对象的funcTwo方法。我现在有点忙,所以现在我无法改进这个答案。

答案 3 :(得分:0)

不可能,因为第二个函数将在调用第一个函数时创建。在此之前它不存在。

您必须在第一个函数之外定义它,如下所示:

function funcOne() {

}
function funcTwo() {    // i want to call to this function
    //do something
}

或者您也可以调用第一个函数并返回第二个函数:

function funcOne() {
     function funcTwo() {    // i want to call to this function
         //do something
     }
     return functTwo;
}

然后像这样称呼它:

var f = funcOne();
f();