2014-02-20 77 views
-3

我得到这个错误:Property 'myFunction' of object [object Object] is not a functionProperty对象的“myFunction的”的翻译:不是一个函数

myFunction= (function(){ 
    //something 
})(); 

myFunction(); 

什么错在这里的?我可以再次拨打我的自动执行功能吗?如果我在自我执行功能中使用var,这也不起作用。

+0

你的函数体没有返回的功能。 –

+1

你将不得不更清楚你认为这涉及到AJAX还是“非异步”。没有任何迹象显示你的假设是正确的;你发布的代码与AJAX无关,并且使一个函数自动执行并不会使它“非异步”。 – meagar

回答

0

通过包装括号

(function(){ 
    // do something 
})(); 

你正在创建一个被立即执行函数表达式的函数调用。函数表达式的结果将被分配给您的变量myFunction

你可能想是这样的:

var myFunction = (function(){ 
    return { 
     doStuff : function(myVariable){ 
      // do stuff 
     }  
    }; 
})(); 

这将创建一个分配给myFunction变量返回的对象。其中该返回对象的属性是doStuff这是一个函数,变量,你可以调用像

myFunction.doStuff('hello world'); 
+0

非常感谢! – user3318525

0

您正在将返回值指定为myFunction。如果你的返回值不是函数,那么myFunction不是函数,你不能调用它。

如果你想存储稍后再次执行它的功能,你不想自动执行的函数表达式:

myFunction= function(){ 
    //something 
}; 

myFunction(); 
+0

我想运行它,因为我想使ajax非异步 – user3318525

+0

这与使其自行执行无关。 – meagar

0
var myFunction = function(){}; 

myFunction(); 

你必须创建一个函数来调用。自调用闭包不返回函数。

+0

我想运行它,因为我想使ajax非异步 – user3318525

+0

在这种情况下不需要关闭。看看jQuery ajax api和asynch = false设置 – TGH

+0

我使用Angularjs – user3318525

相关问题