思路:闭包。closure函数返回一个复杂数据类型即函数,并且所返回函数内部使用外部计数变量count,这样count就会持久化在内存中而不会被销毁。每次调用closure()就会创建不同的闭包函数实例,但是每个闭包函数都有自己的内部变量count,这些闭包函数的内部变量是独立的,故其分别独立计数。
<script type="text/javascript">
const closure = () => {
let count=0
return function(){
count++
return count
}
}
const counter1 = closure();
const counter2 = closure();
console.log(counter1()); // 1
console.log(counter1()); // 2
console.log(counter2()); // 1
console.log(counter2()); // 2
</script>
总结:每次调用闭包函数会创建不同的闭包函数实例,但是每个闭包函数都有自己的内部变量,并且这些闭包函数的内部变量是独立的,其各自互不影响。



京公网安备 11010502036488号