我看到這是一個example on MDN,並不明白爲什麼這是一個Good Thing(TM)。這是一個封閉的好例子嗎?
function makeSizer(size) {
return function() {
document.body.style.fontSize = size + 'px';
};
}
var size12 = makeSizer(12);
var size14 = makeSizer(14);
var size16 = makeSizer(16);
爲什麼上面比下面更好?
function makeSizer(size) {
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;
<a href="#" id="size-12">12</a>
<a href="#" id="size-14">14</a>
<a href="#" id="size-16">16</a>
我必須承認這是一個措辭嚴厲的問題。深夜發佈將做到這一點:)我要問的是爲什麼我會使用閉包,而不是隻做'onclick = makeSizer(14);'? makeSizer(14)指的是函數的第二個版本。我會按照Kooilnc的建議去玩jsFiddle。 – dotnetN00b