这些功能有什么区别?谢谢你的回复!
功能#1
var myQuery = (function() {
(...)
})();
功能#2
var myQuery = (function() {
(...)
});
答案 0 :(得分:9)
在第一种情况下,您自行调用函数文字并将调用的值赋给变量myQuery
。
在第二种情况下,您将分配对已定义的匿名函数的引用。这里,myQuery
的作用类似于指针或对函数的引用。
为了更好地说明这一点。
var myQuery = (function() {
return "Hello";
})();
在这种情况下,myQuery
包含值Hello
。现在,如果你有:
var myQuery = (function() {
return "Hello";
});
myQuery
包含对该函数的引用。如果您在Firebug中使用console.log
输出此值,则会看到function()
。这个引用是你可以传递甚至调用的东西。所以:
var myQuery = (function() {
return "Hello";
});
var value = myQuery();
现在,value
将包含Hello
。希望这能解释不同之处。
答案 1 :(得分:4)
我会简化Function #2
,也许这会更好地显示差异。
var myQuery = function(){ (...) };
在函数#2中,您说“为myQuery指定对此函数的引用”。 在函数#1中,您说“为myQuery分配对此函数的调用值。”
答案 2 :(得分:0)
第一个是自调用函数,使用空参数列表调用。 myQuery的值将是此函数返回的值。
第二个是匿名函数的简单赋值。这个没有调用。
答案 3 :(得分:0)
第一个函数在传递行时执行,第二个函数必须执行才能获得值