我正在审查Mozilla上的Javascript中的闭包,并给出了一个实际的例子。有人可以解释为什么使用闭包的Mozilla方法优于解决问题而不使用下面显示的闭包。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures#Practical_closures
HTML
<a href="#" id="size-12">12</a>
<a href="#" id="size-14">14</a>
<a href="#" id="size-16">16</a>
的Javascript
function makeSizer(size) {
return function() {
document.body.style.fontSize = size + 'px';
};
}
var size12 = makeSizer(12);
var size14 = makeSizer(14);
var size16 = makeSizer(16);
document.getElementById('size-12').onclick = size12;
document.getElementById('size-14').onclick = size14;
document.getElementById('size-16').onclick = size16;
为什么这个例子优于此?
function makeSizer(size) {
document.body.style.fontSize = size + 'px';
}
function size12() { makeSizer(12) }
function size14() { makeSizer(14) }
function size16() { makeSizer(16) }
document.getElementById('size-12').onclick = size12;
document.getElementById('size-14').onclick = size14;
document.getElementById('size-16').onclick = size16;
我用两个例子制作了一个codepen。 https://codepen.io/MicFin/pen/mAOBNa