我一直在阅读关于闭包的 mozdev 文章,它有这个小提琴示例:
function makeSizer(size) {
return function() {
document.body.style.fontSize = size + 'px';
};
}
这个想法是从单击事件中调用具有大小的 makeSizer 并更改字体大小。但是,如果您删除无名函数并执行此操作:
function makeSizer(size) {
document.body.style.fontSize = size + 'px';
}
可点击的链接停止产生任何效果,字体大小直接变为最大,就好像点击了 size16 链接并且链接不再有点击事件一样。添加return
不会改变行为。
(如果不清楚我在说什么,请单击示例上方的链接,他们有小提琴)
我的问题是,为什么这需要关闭/回调?一个简单的陈述不应该起作用吗?如果是关于调用函数,为什么在脚本加载后它不起作用?我明白为什么它会默认为最后一个大小,因为函数调用现在直接改变大小(最后调用 size16),而不是等待调用,但是,为什么它在页面加载后不起作用?