<code class="js"><span class="kd">let</span> <span class="nx">a</span> <span class="o">=</span> <span class="mi">1</span>
<span class="kd">let</span> <span class="nx">b</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span>
<span class="p">}</span>
</code>
感觉大部分回答太复杂了,过于理论化,绕来绕去,没抓住本质和精髓。其实闭包没那么复杂。Closures are functions that refer to independent (free) variables. In
other words, the function defined in the closure 'remembers' the
environment in which it was created.Closures - JavaScript
A closure is a special kind of object that combines two things: a
function, and the environment in which that function was created. The
environment consists of any local variables that were in-scope at the
time that the closure was created.
<code class="text">var inc = (function () { // 该函数体中的语句将被立即执行
var count = 0; // 局部变量初始化
return function () { // 返回一个内嵌的闭包函数引用
return ++count; // 当外部函数 return 后,这里的 count 不再是外部函数的局部变量。
};
}) ();
inc(); // count: 1
inc(); // count: 2
</code><code class="text">function love(name) {
var text = 'Hello ' + name;
var me = function() {
console.log(text);
}
return me;
}
var loveme = love('AutumnsWind');
loveme(); // 输出 Hello AutumnsWind
</code><code class="js"><span class="kd">function</span> <span class="nx">f</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">a</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
</code><code class="js"><span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="nx">i</span><span class="o"><=</span><span class="mi">5</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">setTimeout</span><span class="p">(</span> <span class="kd">function</span> <span class="nx">timer</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span> <span class="nx">i</span> <span class="p">);</span>
<span class="p">},</span> <span class="nx">i</span><span class="o">*</span><span class="mi">1000</span> <span class="p">);</span>
<span class="p">}</span>
</code>
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号