gpt4 book ai didi

javascript - javascript 中闭包的混淆

转载 作者:行者123 更新时间:2023-11-28 15:29:29 24 4
gpt4 key购买 nike

我有这个代码。

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

The variable add is assigned the return value of a self invoking function.

这是否意味着每次调用add时,只调用函数的返回而不是整个函数?

如果没有的话,谁能解释一下吗?

最佳答案

是的,当调用add()函数时,只调用IIFE内部的返回函数。

当解析器在执行阶段遇到它时,IIFE 在页面加载时被调用,并返回另一个函数作为稍后调用的引用。

外部 IIFE 所做的唯一事情就是将 counter 变量保留在它自己的作用域内。

IIFE == Immediately-invoked function expression

关于javascript - javascript 中闭包的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27899350/

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