gpt4 book ai didi

javascript - 在 Javascript 中使用闭包的好例子

转载 作者:数据小太阳 更新时间:2023-10-29 05:39:58 24 4
gpt4 key购买 nike

嗯,我最近了解了 Javascript 中的闭包。

虽然我发现它的概念真的很棒,但我自己还没有找到适合他们的应用程序。

在我找到的所有博客文章和所有教程中,我都很好地解释了它们是什么以及如何使用它们。

我在任何地方都找不到的例子让我觉得:“哇!你可以用闭包来做这个?太棒了!!!”。我找到的所有例子都像这个一样纯粹是学术性的。

function say667() {
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() { alert(num); }
num++;
return sayAlert;
}

var sayNumber = say667();
alert(sayNumber());

所以,我想知道你们中是否有人可以分享一些使用这些特殊功能的令人兴奋的体验。

我知道这是一个悬而未决的问题,但我会将答案归功于最让我惊叹的人。

谢谢

最佳答案

闭包总是与稍后调用的回调函数一起使用,因为它们允许您访问主机调用函数的局部变量,或者可用于将局部变量的值“卡住”到特定的私有(private)变量中当代码继续执行但局部变量本身将更改为另一个值时回调,但在调用回调之前。

以下是我在此处提供的关于 SO 的答案中的闭包示例。

从 setTimeout 回调访问父局部变量:https://stackoverflow.com/a/7032671/816620

将非静态信息传递到延迟回调中:https://stackoverflow.com/a/8660518/816620

我知道上个月我在 SO 答案中使用了数十次闭包(我只是不确定如何在不费力浏览大量帖子的情况下通过搜索快速找到更多示例)。

还有,这里有一个创建私有(private)变量的有用闭包:

function slides(images) {
var slideImages = images || [];

// because of this closure, the variable slideImages is available
// to the method defined in here even though the slides function
// has already finished executing
this.addSlide = function(url) {
slideImages.push(url);
}
this.clearSlides = function() {
slideImages = [];
}
}

// the slideImages variable is not available out here
// it is truly private inside the clsoure
var slideshow = new slides(imgArray);
slideshow.addSlide("xxx.jpeg");

关于javascript - 在 Javascript 中使用闭包的好例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9058248/

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