클로저(Closure)는 어떤 함수가 함수의 외부에서 선언된 변수에 접근하는 것을 말한다. 아래와 같이 for 문에서 var을 사용해보자. i가 4가 되면 false가 되어 for 문을 나온다. 콜백 함수(클릭 이벤트가 발생한 뒤의 동작을 정한 함수)는 나중에 실행된다. 콜백 함수 영역 밖에 있는 변수 i를 계속 참조하면서 기억해둔다. 그게 4이기 때문에 콜백 함수가 실행될 때 결괏값이 계속 4가 나오는 것이다. 여기에서 i는 클로저 변수라고 할 수 있다. See the Pen Untitled by cw (@fromnowwon) on CodePen. 반면에 for 문에서 let을 사용하면 어떻게 될까? let은 블록 스코프이다. 때문에 for 문 밖으로 나온 변수 i와 상호작용하지 않는다. 따라서 클릭한..
본문으로 들어가기 전에 변수의 재선언, 재할당, 변수 참조, 그리고 유효범위(Scope)에 대해서는 아래 페이지에서 참고하면 된다. var, let, const 차이점과 유효범위 (Scope) 작업을 할 때 무의식적으로 var로만 변수를 선언하다가, let이나 const라는 변수를 보면 의아할 것이다. 도대체 왜 변수를 구분해서 쓸까? 사실 ES6 이전에는 let과 const가 존재하지 않았다. ES6에서 let fromnowwon.tistory.com for 문을 사용할 때, 조건식 영역에서 var을 사용할 때와 let을 사용할 때 결괏값이 다르게 나온다. 그 이유에 대해 알아보자. 목차 var, let, const 비교표 for 문에서의 변수 참조 for 문 안에서 함수를 사용할 때 for 문 안에서..
작업을 할 때 무의식적으로 var로만 변수를 선언하다가, let이나 const라는 변수를 보면 의아할 것이다. 도대체 왜 변수를 구분해서 쓸까? 사실 ES6 이전에는 let과 const가 존재하지 않았다. ES6에서 let과 const가 추가되었는데 차이점과 사용법에 대해서 알아보도록 하자. 목차 Scope란? var, let, const 비교표 var의 문제점 var과 let의 재선언과 재할당 var과 let의 참조 function scope와 block scope Scope란? Scope란 변수의 유효 범위를 말한다. 선언한 변수가 어디까지 영향을 줄 수 있냐는 말이다. ES6부터 변수에도 종류가 생겼는데 각 변수에 따라 성격이 다르다. var, let, const 비교표 var let const 재..