先来说说闭包的概念:由于在JavaScript中,函数是对象,对象是属性的集合,而属性的值又可以是对象,则在函数内定义函数成为理所当然,如果在函数func内部声明函数inner,然后在函数外部调用inner,这个过程即产生了一个闭包。
1、闭包的特性
var outter = [];
function test(){
var array = ["one","two","three","four"];
for(var i = 0;i<array.length;i++){
var x = {};
x.no = i;
x.text = array[i];
x.invoke = function(no){
return function(){
print(no);
}
}(i);
outter.push(x);
}
}
test();
闭包允许你引用在于外部函数中的变量,然而,他并不是使用该变量创建时的值,相反,他会使用外部函数中该变量最后的值。
2、闭包的用途:匿名函数自执行函数
var test1 = {
table : [],
tree : {}
};
(function(dm){
for(var i = 0;i<dm.table.rows;i++){
var row = dm.table.rows[i];
for(var j= 0;j<row.cells;i++){
drawCell(i,j);
}
}
})(test1);
创建了一个匿名函数。并立即执行它,由于外部无法引用他内部的变量,因此在执行完成后很快会被释放,最主要是这种机制不会污染全局对象。
本文深入探讨了JavaScript中闭包的概念,通过实例展示了闭包的特性及其在匿名函数、自执行函数等场景中的应用。重点阐述了闭包如何允许引用外部函数中的变量,并在变量值变化时保持最新状态,同时强调了闭包在避免全局作用域污染方面的优势。
226

被折叠的 条评论
为什么被折叠?



