【发布时间】:2013-10-08 16:02:55
【问题描述】:
我一直在阅读关于闭包的 mozdev 文章,它有 this 小提琴示例:
function makeSizer(size) {
return function() {
document.body.style.fontSize = size + 'px';
};
}
这个想法是从点击事件中调用具有大小的 makeSizer 并更改字体大小。但如果你去掉无名函数,只做this:
function makeSizer(size) {
document.body.style.fontSize = size + 'px';
}
可点击的链接不再有任何效果,字体大小直接变为最大,就好像点击了 size16 链接并且链接不再有点击事件一样。添加 return 不会改变行为。
(如果不清楚我在说什么,请单击示例上方的链接,它们有问题)
我的问题是,为什么这需要闭包/回调?一个简单的陈述不应该起作用吗?如果是关于调用函数,为什么在脚本加载后它不起作用?我明白为什么它会默认为最后一个大小,因为函数调用现在直接改变大小(最后调用 size16),而不是等待调用,但是,为什么它在页面加载后不起作用?
【问题讨论】:
-
你的两个小提琴链接都指向同一个地方
-
哎呀抱歉,现在修复它 - 编辑:修复
标签: javascript html css dom closures