gpt4 book ai didi

javascript - 这个js外壳是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 05:34:06 24 4
gpt4 key购买 nike

这是一个页面的代码:

<html>
<body>

<p>Counting with a local variable.</p>

<button type="button" onclick="myFunction()">Count!</button>

<p id="demo">0</p>

<script>
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();

function myFunction(){
document.getElementById("demo").innerHTML = add();
}
</script>

</body>
</html>

脚本中有一个附件。据我了解,每次调用 add 时,计数器都必须再次设置为零,因此单击按钮时它不会增长。但实践表明,我的结论是错误的。请告诉我,为什么每次调用函数 add 时计数器都没有重置?

最佳答案

根据您更新后的代码,counter 的正确行为是不重置为零而是增加 1。

var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();

原因是因为你返回并分配给add的函数只有这部分:

function () {return counter += 1;}

每次调用 add() 时,只会调用那个。原因是因为您有一个声明 counter 并返回一个函数的匿名函数。该函数被放入 add 并将 counter 变量捕获在闭包中。

关于javascript - 这个js外壳是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25045329/

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