【发布时间】:2012-04-27 09:35:09
【问题描述】:
我正在尝试了解更多关于 Javascript 中的闭包的信息,并且正在经历这个:https://developer.mozilla.org/en/JavaScript/Guide/Closures#Practical_closures
根据这篇文章,通过使用这样的功能:
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;
虽然我理解了这里的概念——即 size12、size14 和 size16 成为允许访问内部函数的闭包,但我不禁觉得这是不必要的。拥有不是更容易:
function makeSizer(size) {
document.body.style.fontSize = size + 'px';
}
,然后用这些调用它?
document.getElementById('size-12').onclick = makeSizer(12);
document.getElementById('size-14').onclick = makeSizer(14);
document.getElementById('size-16').onclick = makeSizer(16);
谁能告诉我我的想法是否正确 - 或者我只是 Javascript 的新手,不了解在这种情况下使用闭包的好处,在这种情况下,如果你能解释一下,我会很高兴这样做的好处。
提前谢谢各位。
【问题讨论】:
-
@Joseph:不,这是一个完全有效的闭包用法。
标签: javascript closures