gpt4 book ai didi

javascript - 通过具体示例了解 Javascript 中的私有(private)变量(闭包?)

转载 作者:行者123 更新时间:2023-11-30 16:44:27 25 4
gpt4 key购买 nike

好的,我已经尝试在以下代码中使用闭包来保持变量私有(private),但无济于事。我是 javascript 的新手,已经阅读了很多关于闭包的文章,但仍然无法理解它们。下面,我有一个函数,每次按下特定按钮时,都会显示数组中的下一个单词。我希望我在此函数中使用的计数器变量(下面的“whatNumber”)不是全局变量,但我不知道如何实现。这是我的简单代码:

var wordList = ["jumper", "stumpy", "smelly gumdrops", "awesome puttputt", "soilent green"];
var whatNumber = 0;

function changeWord(){
if (whatNumber < wordList.length) {
alert(wordList[whatNumber]);
whatNumber++;
}
};

最佳答案

function changeWord(){
var wordList = ["jumper", "stumpy", "smelly gumdrops", "awesome puttputt", "soilent green"];
var whatNumber = 0;
return function alertWord(){
if (whatNumber < wordList.length) {
alert(wordList[whatNumber]);
whatNumber++;
}
}
};
//to run this
var alertNewWord = changeWord();
alertNewWord() //jumper
alertNewWord() //stumpy

这带来的好处是能够拥有具有不同警报级别的不同功能。例如:如果您执行另一个 var anotherAlertFn = changeWord() 并调用 anotherAlertFn(),它将导致 “jumper”。初始函数(即:alertNewWord())仍将具有它自己的状态,即:whatNumber === 3anotherAlertFn 具有 whatNumber === 1。这可能非常有用,想象一个为游戏中的不同玩家记分的函数。每个玩家都可以使用相同的功能而不会作弊(即:改变他们的分数)并且永远不会影响其他玩家的分数。

关于javascript - 通过具体示例了解 Javascript 中的私有(private)变量(闭包?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31454474/

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