【发布时间】:2012-06-27 09:49:39
【问题描述】:
我看到这是 example on MDN,但不明白为什么这是一件好事 (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。
标签: javascript function functional-programming closures