JavaScript 中的自调用函数

发布于 2024-09-30 03:38:43 字数 222 浏览 3 评论 0原文

这些功能有什么区别?谢谢回复!

函数#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

花落人断肠 2024-10-07 03:38:43

在第一种情况下,您自调用函数文字并将调用的值分配给变量 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。希望这能解释其中的差异。

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.

var myQuery = (function() {
   return "Hello";
})();

In this case, myQuery contains the value Hello. Now if you had:

var myQuery = (function() {
   return "Hello";
});

myQuery contains a reference to the function. If you used console.log in Firebug to output this value, you would see function(). This reference is something you can pass around or even invoke. So:

var myQuery = (function() {
   return "Hello";
});

var value = myQuery();

Now, value will contain Hello. Hope this explains the difference.

超可爱的懒熊 2024-10-07 03:38:43

我将简化Function #2,也许这会更好地显示差异。

var myQuery = function(){ (...) };

在函数 #2 中,您说的是“为 myQuery 分配对此函数的引用”。
在函数 #1 中,您说的是“为 myQuery 分配对此函数的调用值”。

I'll simplify Function #2 and perhaps that will better show the differences.

var myQuery = function(){ (...) };

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."

回眸一笑 2024-10-07 03:38:43

第一个是自调用函数,使用空参数列表进行调用。 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.

段念尘 2024-10-07 03:38:43

第一个函数在行传递时执行,第二个函数必须执行才能获取值,

例如: 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/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文