++**버튼을 배열로 만들어보자**
이때, Blue 버튼 또는 Red 버튼을 클릭하면 모두 2가 나온다. 왜 그럴까?
이유는...
이 문제는 일반적으로 클로저(Closure)라는 것 때문에 발생한다.
for loop에서 람다를 사용하여 이벤트 리스너를 추가할 때, 람다는 loop 변수 i를 캡쳐하는데
이때, i 변수는 for loop의 변수이므로 각 반복마다 새로운 값으로 업데이트된다.
그런데 람다 함수 내부에서 i를 참조하면, 모든 람다 함수가 동일한 i 변수를 참조하게 되어,
loop가 끝나는 시점의 i 값을 모두가 캡쳐하게 된다는 것이다.
그 결과, 모든 버튼이 마지막 값(btns.Length=2)을 참조하게 된다.
따라서 해결하기 위한 방법으로는
(1) loop안에 람다 함수가 캡쳐하게 될 다른 변수를 선언하는 방법 또는
(2) 람다 함수 부분을 별도의 메서드로 정의 하는 것이다.