在变量中调用函数

时间:2016-06-14 22:58:15

标签: jquery function variables

我在变量

中使用此函数
var MyFunction = (function () {
        //......
   function FunctionToCall() {
        //......       
    };
       //........ 
}();

我想用变量外部的事件处理程序调用{​​{1}},如下所示:

FunctionToCall()

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您可能错过了一份退货声明 我想你想要这样的东西:

var myFunction = (function() {
  var privateVar = 'Hello';
  
  return function innerFunction() {
    return privateVar;
  };
})();

console.log(myFunction());

另一种方法是使用您要访问的方法返回一个对象:

var myThing = (function() {
  var privateVar = 'Hello';

  return {
    innerFunction1: function() {
      return privateVar;
    },
    doSomething: function(newString) {
      privateVar = newString;
    }
  };
})();


myThing.doSomething("Hi!");
console.log(myThing.innerFunction1());

之后,您可以附加您可以访问事件处理程序的任何内容。

答案 1 :(得分:0)

您可以声明静态方法。因此,将其称为MyFunction.FunctionToCall()

var MyFunction = function() {
};

MyFunction.FunctionToCall = function() {
    console.log('MyFunction.FunctionToCall called');
};

$(function() {
    $('div').click(function() {
        MyFunction.FunctionToCall()
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>

<div>Click me</div>

答案 2 :(得分:-1)

您正在为代码中的变量MyFunction声明一个匿名函数。它将是未定义的。您不想在匿名函数内调用任何内容,因为通常会立即调用匿名函数。

相反,将FunctionToCall声明为外部变量,然后您可以在匿名块内部定义它,如下所示

var FunctionToCall;
(function () {
    //......
    FunctionToCall = function() {
       //......       
    };
   //........ 
}();

然后你可以调用FunctionToCall。虽然我不认为这是一个很好的约定,但通常你希望将整个代码中使用的函数保持在更高的相同范围级别。