对JavaScript中的一段代码不是那么理解,求解释,为什么弹出的窗口是3?

<!doctype html>
<html>
<head><meta charset="utf-8">
<title>无标题文档</title>
</head>
	<script type="text/javascript">		
	    window.onload=function(){			
	        for(var i=1;i<=2;i++){				
	            document.getElementById("b"+i).addEventListener("click",function(){alert(i);},false);			
	        }
	    }	
	    </script>
	    <body>	
	    <button id="b1">button1</button> <button id="b2">button2</button>
	</body>
</html>


慕哥4957459
浏览 1327回答 3
3回答

随便戳两下

要回答你的这个问题,首先需要知道for循环的执行顺序,首先,初始化一个i变量为1,然后拿1和第二个条件i<=2比较是否为true,是的话,进入代码块执行内部,然后再执行i++,这个时候i为2,再次执行上面的流程,然后i为3,也就是说这个时候var i =3,不满足第二个条件,这个时候绑定的点击事件会首先在代码块内部寻找i变量的值,个人建议你如何真想理解,先去看看java虚拟机是如何执行拆解for循环的,原理和这个的差不多

落叶1111

for循环时瞬间执行完的,这是i已经变为3了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript