var createIframe=(function(){
var iframe;
return function(){
if(!iframe){
iframe=document.createElement('iframe');
iframe.style.display='none';
document.body.appendChild(iframe);
}
return iframe;
}
})();
这是一个高阶函数,它返回一个函数,它返回的函数的返回值是 iframe
这样形成了一个闭包,保存了iframe的值,不必每次计算;
这样看:
补充:
最外层右半部份是一个立即执行的函数:
再补充:
每次使用
createIframe
变量时,使用的其实是这一段代码:这段代码有一个作用域,就是外层
function
的内部,它声明了一个iframe
变量,这个变量会随内层的function
一起保存,不会清除当第一次执行代码,会向
<body>
中增加一个<iframe>
,返回这个引用,并把它保存在iframe
变量中,iframe
变量会一直保存在内存中,不被清除以后执行代码时,首先判断
iframe
是否存在,如果存在,则直接返回其引用,不再创建新的<iframe>