思路:闭包。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>
总结:每次调用闭包函数会创建不同的闭包函数实例,但是每个闭包函数都有自己的内部变量,并且这些闭包函数的内部变量是独立的,其各自互不影响。