我从这里 ( http://ejohn.org/apps/learn/#19 ) 获得的这个函数,即使它没有任何内部函数在外部函数之后传递的值的“记录”持续存在结束,具有某种类型的数据缓存。事实上,缓存属性中的值在调用该函数后仍然存在。我想知道这是否是一种闭包:
function getElements( name ) {
var results;
if ( getElements.cache[name] ) {
results = getElements.cache[name];
} else {
results = document.getElementsByTagName(name);
getElements.cache[name] = results;
}
return results;
}
getElements.cache = {};
我不确定它是否适用于函数属性或仅适用于引用的函数。我仍然对闭包感到困惑,所以也许我在胡说八道。