javascript中点击3个按钮弹出不同的值

一次面试遇到的,其实很简单

普通的(错误的)写法是这样的




	
	Document


	
	
	


但是这样的话,弹出来的都是3,这是因为js中var并不是一个块级作用域,

简单的解决办法

方法一:就是把var改成let,就okay啦啦啦啦

方法二:当然在没有es6的let之前,是要使用闭包解决的

	function box() {
		
			for(var i=0; i<3; i++) {
					btn[i].onclick = (function (num){
						return function() {
							alert(num);
						}
					})(i);
				}
			
	}
如此的话,num就能够驻留在指定的值了

什么你要理解闭包?你可能需要看看 什么是闭包,我的理解


你可能感兴趣的:(面试)