JavaScript 中的自调用函数
这些功能有什么区别?谢谢回复!
函数#1
var myQuery = (function() {
(...)
})();
函数#2
var myQuery = (function() {
(...)
});
What's the difference between these functions? Thanks for reply!
Function #1
var myQuery = (function() {
(...)
})();
Function #2
var myQuery = (function() {
(...)
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在第一种情况下,您自调用函数文字并将调用的值分配给变量
myQuery
。在第二种情况下,您将分配对您定义的匿名函数的引用。在这里,
myQuery
的作用就像一个指针或对函数的引用。为了更好地说明这一点。
在本例中,
myQuery
包含值Hello
。现在,如果您有:myQuery
包含对该函数的引用。如果您在 Firebug 中使用console.log
来输出此值,您将看到function()
。您可以传递甚至调用该引用。所以:现在,
value
将包含Hello
。希望这能解释其中的差异。In the first case, you're self-invoking a function literal and assigning the value of the invocation to the variable
myQuery
.In the second case, you're assigning a reference to the anonymous function that you've defined. Here,
myQuery
acts like a pointer or a reference to a function.To better illustrate this.
In this case,
myQuery
contains the valueHello
. Now if you had:myQuery
contains a reference to the function. If you usedconsole.log
in Firebug to output this value, you would seefunction()
. This reference is something you can pass around or even invoke. So:Now,
value
will containHello
. Hope this explains the difference.我将简化
Function #2
,也许这会更好地显示差异。在函数 #2 中,您说的是“为 myQuery 分配对此函数的引用”。
在函数 #1 中,您说的是“为 myQuery 分配对此函数的调用值”。
I'll simplify
Function #2
and perhaps that will better show the differences.In Function #2, you're saying "Assign myQuery a reference to this function."
In Function #1, you're saying "Assign myQuery the value of a call to this function."
第一个是自调用函数,使用空参数列表进行调用。 myQuery 的值将是该函数返回的值。
第二个是匿名函数的简单赋值。此中没有任何调用。
The first one is a self-invoking function, called with an empty parameter list. The value of myQuery will be what this function returns.
The second one is simple assignment of an anonymous function. There is no invocation in this one.
第一个函数在行传递时执行,第二个函数必须执行才能获取值,
例如: http:// jsfiddle.net/yVrwX/
well the first function executes as the line is passed and the second will have to be executed to get the value
Eg : http://jsfiddle.net/yVrwX/