JS 闭包
看了主页某高人整残了页面排版的闭包,http://www.iteye.com/topic/1118236
看的我实在无语了,放出个简单的例子
稍微有点js基础的应该能看懂,不需要我多解释了~~
需要说的也就是js的执行需要加上() 表示function需要执行
再就是js是编译后执行,优先执行赋值初始化变量等操作,其次才是执行function
第一个就是因为变量i在初始化的时候已经通过 i++ 由0增长了 后面使用的时候就一直会是固定值
第二个是将值循环赋给一个新的变量,这样就不会造成全局使用一个变量
这个只能算是闭包的一个使用场景,更多的请继续度娘搜索
<html><meta http-equiv="content-type" content="text/html; charset=GBK"/><body><div id="o1"><div>点我啊,都是一样的结果</div><div>点我啊,都是一样的结果</div><div>点我啊,都是一样的结果</div><div>点我啊,都是一样的结果</div><div>点我啊,都是一样的结果</div><div>点我啊,都是一样的结果</div><div>点我啊,都是一样的结果</div><div>点我啊,都是一样的结果</div></div><br><div id="o2"><div>点我啊</div><div>点我啊</div><div>点我啊</div><div>点我啊</div><div>点我啊</div><div>点我啊</div><div>点我啊</div><div>点我啊</div></div></body><script>(function(){var lis = document.getElementById("o1");for(var i=0;i<lis.children.length;i++){var s = i;lis.children.onclick=function(){alert(s);}}})();(function(){var lis = document.getElementById("o2");for(var i=0;i<lis.children.length;i++){var s = i;lis.children.onclick=function(x){return function(){alert(x)}}(s);}})();</script></html>
无语了,对li标签,使用code以后全都变成[ * ]了。。。
只好都改成div了
页:
[1]