Javascript (7) 썸네일형 리스트형 AI 가 알려주는 new Promise() 예시 클로저란 자바스크립트는 렉시컬 스코프를 따르는 프로그래밍 언어이다. 코드 실행 순서 outer 함수는 inner 함수를 반환하고 지역변수 x는 10을 저장하고 실행컨텍스트에서 제거되고 x값은 유효하지 않게 된다. 그러나 생명주기가 종료되어 실행 컨텍스트에서 제거된 outer함수의 지역변수 x가 inner함수에서 참조되고 있다! 이처럼 외부 함수보다 중첩함수가 더 오래 유지되는 경우 중첩함수는 이미 생명 주기가 종료한 외부 함수를 변수를 참조할 수 있다. 이러한 중첩함수를 클로저 (closure)라고 부른다. 렉시컬 스코프란 var x = 1; function outer() { var x = 10; inner(); } function inner() { console.log(x); } 위의 예시를 해석해보자 1. 결과 값은? 정답은 x = 1이다. 자바스크립트는 함수를 어디서 호출했는지가 아니라 함수를 어디서 정의했는 지에 따라 상위 스코프를 결정한다. 2. inner함수는 전역에서 정의 되었다. 호출은 전역에서 했지만 정의는 outer함수 안에서 호출이 되었다. 이것을 이해하는 것이 렉시컬 스코프를 이해하는 부분에 중요한 개념이다. execution context 자바스크립트 엔진은 소스코드를 2개의 과정을 거친다. "소스코드의 평가"와 "소스코드의 실행" 과정으로 나누어 처리한다. 1. 소스 코드의 평가 (선언문) 소스코드 평가 과정에서 실행 컨텍스를 생성하고 변수와, 함수등의 선언문만 먼저 실행 즉 변수나 함수 식별자를 키로 실행 컨텍스트가 관리하는 렉시컬 환경의 환경 레코드에 등록한다. 2. 소스 코드의 실행 소스코드 평가 과정이 끝나면 비로소 선언문을 제외한 소스코드가 순차적으로 실행되기 시작한다. (런타임의 실행) 이 때 소스코드 실행에 필요한 정보, 즉 변수나 함수의 참조를 실행 컨텍스트가 관리하는 스코프에서 검색해서 취득한다. 그리고 변수 값의 변경 등 소스코드의 실행 결과는 다시 실행 컨텍스가 관리하는 스코프에 등록된다. 3. 예시를 통한 이해 va.. 스코프 체인 스코프 체인이란? 우선 최상위 스코프는 전역 스코프이다. 변수를 참조할 때 자바스크립트 엔진은 scope chain을 통해 변수를 참조하는 코드의 스코프에서 시작하여 상위 스코프 방향으로 이동하여 선언된 변수를 검색한다. 이를 통해 상위 스코프에서 선언한 변수를 하위 스코프에서도 참조할 수 있다. (아래의 그림을 참조) 스코프 체인의 프로세스의 이해 inner 지역 스코프에서 x 변수를 찾고 없다면 outer 함수에서 찾고 마지막으로 전역 스코프에서 x값을 찾아서 반환다. javascript json.parse() 안녕하세요 ? 오늘은 JSON.parse() 사용시 에러가 발생하는 경우와 예상되는 경우를 나눠서 작성 해볼게요 위에서 보시면 j_test 변수는 이미 객체입니다. 따라서 객체를 또 파싱하면 오류가 발생하는 것을 볼 수 있습니다. 따라서 객체는 그대로 사용하시거나 문자의 걍우인 위 json변수처럼 사용하시면 정상적으로 결과를 도출 할 수 있습니다. Collection 개념 1. Javascript ES6에서 나온 Collection 개념 및 예시 2. 콘솔 결과 이전 1 다음