以下代码会做什么?
我已经使用了JS多年但是想知道这个结构是如何工作的?
(function() { /* No implementation yet */ })();
知道没有实现 - 如果有 - 我将如何调用它?以下是否会成为匿名对象?
var temp = (function() { })();
我可以用作:
temp.doWhateverDefined();
答案 0 :(得分:4)
你有immediately invoked function expression (IIFE)。它在JavaScript中很常见。
答案 1 :(得分:2)
(function() { /* No implementation yet */ })();
这称为立即调用函数表达式或简称IIFE。它被立即声明,评估和调用。
基本理念是:
var x = (function() { return 5;})();
alert(x); //5
答案 2 :(得分:1)
它正在立即运行。就像你说的那样:
var f = function() { /* No implementation yet */ }
(f)();
与
相同var f = function() { /* No implementation yet */ }
f();
重点是允许一个代码块(页面初始化等)使用它喜欢的任何变量/函数名称,而不会与可能使用相同名称的其他Javascript代码冲突。所有功能/等。在那个街区宣布的是当地的,不要伤害外面的世界。
答案 3 :(得分:0)
这是一个匿名函数,因此您不能在创建它的行中调用,除非您将其指定为名称
var temp = (function() { })();
这段代码应改为
var temp = (function() { });
这样你就可以将函数分配给名称了。要调用它只需使用括号
temp()
答案 4 :(得分:0)
这是一个自动执行的功能。您不会调用它,它会自动执行。
如果函数返回某些内容, var temp = (function() { })();
将起作用。
答案 5 :(得分:0)
你所拥有的是一个已经被调用的自我调用函数。
var temp = (function() { })();
所以函数必须返回一个函数,以便temp()或temp.somethin();可以被触发。有关详细信息,请参阅下面的示例
var temp = (function() { return {
doWhateverDefined: function () {
return 'invoked';}
};
}
)();
alert(temp.doWhateverDefined()); //should alert invoked