자바스크립트의 스코프는 변수의 유효한 범위를 의미한다. var로 선언한 변수는 오직 함수의 중괄호 내부만을 유효 범위로 인정하는데, 이를 함수 레벨 스코프$_{function \space level \space scope}$라 한다. 반면 C나 자바 등 대부분의 프로그래밍 언어는 모든 중괄호(함수, if문, for문, while문 등) 내부를 유효 범위로 인정한다. 이러한 특성을 블록 레벨 스코프$_{block \space level \space scope}$라 한다. var x = 1;if (true) { var x = 10; console.log("if문 안쪽:", x);}console.log("if문 바깥쪽:", x);위 예제를 보면 if문 내부와 외부에서 선언된 x가 같은 변수를 가리킨다. v..
들어가며자바스크립트에서 스코프 체인은 변수와 함수의 유효 범위를 결정한다. 이 글에서는 스코프 체인이 무엇이고 어떻게 동작하는지를 이해해보려 한다. 스코프 체인에서 변수를 찾는 과정은 단방향으로 이루어진다. 자바스크립트 엔진은 현재 스코프에서 시작해 상위로 올라가면서 변수를 찾아간다. 결과적으로 스코프가 변수와 함수의 접근성을 단순하고 일관된 규칙으로 관리하는 것을 이해할 수 있을 것이다. 스코프 체인함수는 전역이나 다른 함수 내부에서 정의할 수 있다. 함수 내부에 다른 함수를 정의하는 것을 함수의 중첩이라 하며, 이때 내부에 정의된 함수를 중첩 함수$_{nested \space function}$, 이를 감싸는 함수를 외부 함수$_{outer \space function}$라 한다. 함수가 중첩되면 ..
개요최근 자바스크립트의 실행 컨텍스트와 클로저를 공부하면서 더 기본이 되는 개념을 먼저 정리해야 할 필요성을 느꼈다. 실행 컨텍스트와 클로저는 자바스크립트의 동작 원리를 이해하는 데 중요한 개념이지만, 이 것들을 제대로 이해하기 위해서는 그 토대가 되는 스코프에 대한 이해가 선행되어야 함을 느꼈다. 이번 글에서는 스코프의 기본 개념을 정리하고, 이를 바탕으로 다음 글에서 실행 컨텍스트와 클로저로 확장해나갈 예정이다. 스코프란스코프는 모든 프로그래밍 언어의 기본 개념 중 하나다. 특히 자바스크립트는 다른 언어와 구별되는 스코프 특징이 있어 이해가 더욱 중요하다. 아래에서 자세히 설명하겠지만, var와 let/const 키워드로 선언한 변수의 스코프가 서로 다르게 동작한다. 스코프는 식별자(변수명, 함수명..