function showHelp(help) {
document.getElementById('help').innerHTML = help;
}
function setupHelp() {
var helpText = [
{'id': 'email', 'help': 'Your e-mail address'},
{'id': 'name', 'help': 'Your full name'},
{'id': 'age', 'help': 'Your age (you must be over 16)'}
];
for (var i = 0; i < helpText.length; i++) {
(function() {
var item = helpText[i];
document.getElementById(item.id).Onfocus= function() {
showHelp(item.help);
}
})(); // 马上把当前循环项的 item 与事件回调相关联起来
}
}
setupHelp();
重点在自执行函数上,这个自执行函数有形成闭包吗?
先说说我的观点,我不认为这有形成闭包,而只是创建了一个新的函数作用域而已。
为什么我会这么认为,我先说说我对闭包的定义:闭包必须是越过原执行环境访问到了正常情况下不能访问的对象。很明显上述代码中并没有越过原执行环境,所以不形成闭包。
贴发出来主要是想大家一起讨论下,大家互相交流学习。欢迎大家积极表达自己的意见。
document.getElementById('help').innerHTML = help;
}
function setupHelp() {
var helpText = [
{'id': 'email', 'help': 'Your e-mail address'},
{'id': 'name', 'help': 'Your full name'},
{'id': 'age', 'help': 'Your age (you must be over 16)'}
];
for (var i = 0; i < helpText.length; i++) {
(function() {
var item = helpText[i];
document.getElementById(item.id).Onfocus= function() {
showHelp(item.help);
}
})(); // 马上把当前循环项的 item 与事件回调相关联起来
}
}
setupHelp();
重点在自执行函数上,这个自执行函数有形成闭包吗?
先说说我的观点,我不认为这有形成闭包,而只是创建了一个新的函数作用域而已。
为什么我会这么认为,我先说说我对闭包的定义:闭包必须是越过原执行环境访问到了正常情况下不能访问的对象。很明显上述代码中并没有越过原执行环境,所以不形成闭包。
贴发出来主要是想大家一起讨论下,大家互相交流学习。欢迎大家积极表达自己的意见。


