js闭包,用函数传参的方式,利用函数参数,保存现场,例子就是每隔一秒输出一个大小为4的数组中的内容,顺序。
function greetingMaker (greeting){
function addName(name){
<span style="white-space:pre"> </span>return greeting + ' ' + name;
}
return addName;
}
var dayTimeGreeting = greetingMaker("good day to you");
for (var i = 0; i < 1000000; i++) {
dayTimeGreeting('linda');
}
function greetingMaker2 (greeting,name){
return greeting + ' ' + name;
}
for(var i = 0; i <10000; i++ ){
greetingMaker2("good night to you","linda");
}
在这个例子中,经过测试下面一个性能优于上面一个。但是:
我们要尽可能的避免全局变量,因为它和库有潜在的冲突,有时候你需要存储跨越几个函数调用的使用,但是你不想每次都必须重复的给该函数发送这些信息。维持这些从一个函数到另一个函数的一种方法,就是在一个函数内部创建一个函数,让他们都访问该数据,然后从外围函数返回内部函数,从另一个函数返回一个函数,这叫做函数闭包。
意外闭包,导致持久性的内存泄漏。
function outFunction(){
var doc = document.getElementById("doc");
var newobj = {'doc':doc};
doc.newObj = newObj;
}