can';在javascript中不能再次匿名调用函数?

can';在javascript中不能再次匿名调用函数?,javascript,Javascript,然后我调用func()它说func不是一个函数 如果是这样的话,我必须这么做 var func = (function(){ //do something })(); 后来 function func(){ //do something }; func(); 对吗 此代码的末尾有(),即它已经在调用函数。分配给func的值是函数的返回值 如果要将函数本身分配给func,只需执行以下操作: var func = (function(){ //do something })(); 就这样做吧,

然后我调用
func()
它说func不是一个函数

如果是这样的话,我必须这么做

var func = (function(){
//do something
})();
后来

function func(){
//do something
};
func();
对吗

此代码的末尾有
()
,即它已经在调用函数。分配给
func
的值是函数的返回值

如果要将函数本身分配给
func
,只需执行以下操作:

var func = (function(){
//do something
})();

就这样做吧,你不需要()错误是正确的
func
是调用函数的结果(由定义后的
()
引起)。如果不这样做,就会解决这个问题


请注意,您不能重复使用匿名函数,因为您无法识别要重复使用的函数。由于您将其分配给变量,因此您实际上是在给它命名。

您在这里使用的函数已通过
(Function(){})(

要将
func
用作函数,必须返回函数

 var func = function(){

    }
console.log(func);
因此,您可以调用
func()

JSFIDLE
A自调用匿名函数是一个只能执行一次的函数,因为它没有引用

在这种情况下

var func = (function(){
  return function (){ 
     //  do something here
  }
})();
变量func没有对匿名函数的引用,那么它将包含函数返回的值,在本例中为未定义值

如果希望能够调用函数,则必须创建如下引用:

var func = (function(){
    //do something
})();

以下语法

(函数(){
//做点什么
})()
被称为

当你这样做的时候

var func=(函数(){
//做点什么
})();
您没有指定函数,而是指定其响应。因此,如果返回一个对象,它将引用该对象而不是函数

如果您希望有一个函数充当init,并且能够在单词后调用它,请使用命名函数并调用此函数

函数init(){}
init();
请参阅以获取更多参考

当你定义一个函数,比如

函数func1(){}
//或
var func1=函数(){}

在内存中创建一个引用,并将其分配给functionName,然后使用该名称来调用它。创建匿名函数时,您没有存储任何引用,因此无法调用它。

我希望它本身是init,然后再次调用,这是不可能的?@AliciaBrandon“init by its and call it”是什么意思?调用本身我的意思是添加
func()如果你想在那里调用它。或者,如果你疯了,
var func;(func=函数(){…})()。这似乎比其他答案更详细,没有任何行为差异。谢谢,思考会为答案添加更多内容。
var func = (function(){
  return function (){ 
     //  do something here
  }
})();
var func = (function(){
    //do something
})();
var func = function(){
    //do something
};
function func() { 
    // do something
}