使用js闭包解决史上最难php面试题之第七题

by pxz


发布于: 2017-07-11 所属分类: php 前端 javascript 标签: 闭包 面试题  382


<p>题目是这样的</p> <p><strong>7. 以下js代码有什么潜在问题(点击每个div弹出相应的序号)?该如何解决?</strong></p> <pre><code>var es=document.getElementsByTagName('div'); for(var i=0; i < es.length; i++){ es[i].onclick=function(){ alert(i); } } </code></pre><p>闭包其实就是定义在一个函数内部的函数<br>利用闭包的两个特点: 1. 它是函数内部连接外面的一条桥梁, 它可以读取函数内部的变量, 2. 它可以让函数内部的变量的值始终保持在内存中。<br>我们可以改成如下形式</p> <pre><code>var es=document.getElementsByTagName('div'); for(var i=0; i < es.length; i++){ (function() { var b = i; es[i].onclick=function(){ alert(b); } })(); } </code></pre><p>这样即可完美解决</p> <p>附题目链接:<a href="http://www.thinkphp.cn/topic/30726.html">http://www.thinkphp.cn/topic/30726.html</a></p>

发表评论

暂无评论

搜索
用户登陆