六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 52|回复: 0

JS 闭包

[复制链接]

升级  29.33%

24

主题

24

主题

24

主题

秀才

Rank: 2

积分
94
 楼主| 发表于 2013-1-29 08:56:57 | 显示全部楼层 |阅读模式
看了主页某高人整残了页面排版的闭包,
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了
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表