2014-10-27 153 views

回答

4

doSomething不是函数。这是undefined

doSomething = (function(x) { 
    alert(x) 
})(); 

这声明一个匿名函数,立即执行它(这是()做什么),然后设置doSomething的返回值 - undefined。您的匿名函数需要一个参数(x),但没有任何内容传递给它,因此xundefined

你可能想这样的:

doSomething = function(x) { 
    alert(x) 
}; 

doSomething(123); 
2

您需要删除括号,现在你定义的功能,并立即用一个空的参数列表调用它。将其更改为:

doSomething = function(x) { 
    alert(x) 
} 

然后您可以调用它。

0

这不是更好的方法吗?让它初始化,然后调用它传递一个参数?

doSomething = (function(x) { 

    return(
      init = function(x){ 

      alert(x) 
      } 
     ) 


})(); 

doSomething("test") 
+0

现在你只是让它更复杂。你为什么要创建一个* global *变量'init'?为什么主要的匿名者使用参数'x'?如果你真的想这样做,请执行以下操作:'doSomething =(function(){return function(x){alert(x);};})();' – 2014-10-27 20:31:06

+0

*你实际存在什么问题*试图在这里解决?为什么你需要使用自动调用的匿名函数?为什么不只是'doSomething = function(x){alert(x); };'? – 2014-10-27 20:32:27

+0

我的一个年轻的同事开发者已经用这种方式包装了他的所有功能,我正在试图绕过我的头来解释为什么。我从来不用这种方式编码,但他坚持认为这是良好的做法?任何解释? – 2014-10-27 20:45:35

相关问题