我试图在 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 的新手并且不了解在这种情况下使用闭包的优势,在这种情况下,如果你能解释一下我会很高兴这样做。
提前谢谢各位。