javascriptの中で3つのボタンをクリックして異なる値を弾きます.

814 ワード

一回の面接で出会ったのは、実は簡単です.
普通の書き方はこうです.



	
	Document


	
	
	


	var btn=document.getElementsByTagName("button");
	function box() {
			for(var i=0; i<3; i++) {
					btn[i].onclick = function (){
					alert(i);
				}
				}
	}
	
	box();

ですが、このようにすれば、弾くのは全部3です.これはjsのvarがブロックレベルの作用領域ではないからです.
簡単な解決方法
方法の1:varをletに変えて、okayラララ
方法2:もちろん、es 6のletがない前に、クローズドで解決します.
	function box() {
		
			for(var i=0; i<3; i++) {
					btn[i].onclick = (function (num){
						return function() {
							alert(num);
						}
					})(i);
				}
			
	}
であれば、numは指定された値に留まることができます.
クローズドを理解するには何が必要ですか?見てください. クローズドとは何か、理解しています.