gpt4 book ai didi

Javascript 匿名闭包

转载 作者:行者123 更新时间:2023-12-03 08:26:53 28 4
gpt4 key购买 nike

我已经阅读了很多关于 Javascript 中的闭包的内容
那些牙套是干什么用的??
我继续阅读 mozilla.org其中说闭包应该定义为
(function(){...})();
但在 http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html ,它说闭包函数是
(function(){...}());
有什么区别或后一个是错误的?
最后一个()的目的是什么?你会在里面放一些参数吗?
我正在寻找一个很好的引用。

编辑:
此外,Mozilla.org 上有一个示例

var makeCounter = function() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment: function() {
changeBy(1);
},
decrement: function() {
changeBy(-1);
},
value: function() {
return privateCounter;
}
}
};

为什么这个“功能”需要分号?如果需要在声明后立即调用,则应在结束分号之前放置 ()。但是没有。

最佳答案

语法

(function(){...})()

只是一个立即调用的匿名函数。你如何使用括号并不重要,因为底层代码是一个被声明和调用的函数。

相反,闭包用于描述函数可以访问在其范围之外声明的变量的情况,这些变量可以通过闭包访问

为了清楚起见:

如果我们有以下功能
   function hello() {
alert("Hello");
}

我们可以通过以下方式调用该函数
hello()

它调用函数'hello'。但是如果我们不想给它一个名字,但仍然调用它,那么我们可以做
(function hello() {
alert("Hello");
})()

这将与前面调用 hello 的示例完全相同。

然而,在这种情况下,给函数命名为“hello”是没有意义的,所以我们可以简单地删除它:
(function() {
alert("Hello");
})()

这是您原始问题中使用的符号。

关于Javascript 匿名闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16032840/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com