렉시컬 환경
[JavaScript] 변수의 유효범위와 클로저
코드 블록 코드 블록 {...} 안에서 선언한 변수는 코드 블록 안에서만 사용할 수 있다. if (true) { let message = "안녕하세요!"; alert(message); // 안녕하세요! } alert(message); // ReferenceError: message is not defined if와 같은 조건문만이 아니라 반복문에도 해당한다. for (let i = 0; i < 10; i++) { alert(i); // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } alert(i); // ReferenceError: i is not defined 중첩 함수 함수 내부에서 선언한 함수를 중첩 함수라고 부르며 중첩 함수는 새로운 객체의 프로퍼티 형태나 중첩 함수 그 자체로 반환될 수..
TIL - 20220713
오늘은 모던 JavaScript 튜토리얼에서 변수의 유효 범위와 클로저(https://ko.javascript.info/closure)에 대해서 공부했다. 공부하면서 내용이 많기도 하고 또 중요하다는 생각도 들어서 자세하게 정리한 글을 따로 작성할 예정이다(작성 후 수정 예정). 먼저, 작성한 질문은 다음과 같다. 자바스크립트는 함수 지향 언어이다. 왜냐하면, 함수를 동적으로 생성할 수 있고, 생성한 함수를 다른 함수의 인수로 넘길 수 있으며, 생성된 곳이 아닌 곳에서 함수를 호출할 수 있기 때문이다. 질문에 대한 대답을 작성하면서도 함수를 동적으로 생성한다는 말이 무슨 의미인지, 생성한 함수를 다른 함수의 인수로 넘기는 예를 공부해야겠다는 생각이 들었다. 내가 작성하면서도 이게 무슨 의미일까 바로 고민..