본문 바로가기

IT/자바스크립트12

[JS] 클로저 (Closure) 실행 컨텍스트와 클로저 생성된 함수 객체는 [[Scopes]] 프로퍼티를 가지게 됩니다. [[Scopes]] 프로퍼티는 함수 객체만이 소유하는 내부 프로퍼티(Internal Property)로서 현재 실행 컨텍스트의 스코프 체인이 참조하고 있는 객체를 값으로 설정합니다. 내부 함수의 [[Scopes]] 프로퍼티는 자신의 실행 환경(Lexical Enviroment)과 자신을 포함하는 외부 함수의 실행 환경과 전역 객체를 가리킵니다. 이때, 자신을 포함하는 외부 함수의 실행 컨텍스트가 소멸하여도 [[Scopes]]프로퍼티가 가리키는 외부 함수의 실행 환경(Activation Object)은 소멸하지 않고 참조할 수 있습니다. 이것이 클로저(Closure)입니다. 클로저 외부함수에서 내부함수를 반환하는 코드.. 2023. 3. 19.
[JS] 실행 컨텍스트 실행 컨텍스트 실행 컨텍스트는 자바스크립트가 동작하는 원리라고 할 수 있습니다. 쉽게 말하면, 코드가 실행되는 환경이라고 보면 됩니다. 전역 컨텍스트 생성 후, 함수 호출 시마다 함수 컨텍스트가 생깁니다. 컨텍스트 생성 시 컨텍스트 안에 변수객체(arguments, variable), scope chain, this가 생성됩니다. 컨텍스트 생성 후 함수가 실행되는데, 사용되는 변수들은 변수 객체 안에서 값을 찾고, 없다면 스코프 체인을 따라 올라가며 찾습니다. 함수 실행이 끝나면 해당 컨텍스트는 사라지고, 페이지가 종료되면 전역 컨텍스트는 사라지게 됩니다. 실행 컨텍스트 스택 코드가 실행될 때, 실행 컨텍스트 스택(Stack)이 생성하고 소멸하게 됩니다. 현재 실행 중인 컨텍스트에서 관련 없는 코드(예를.. 2023. 3. 15.
[JS] 스코프 (Scope) 지난 포스팅에서는 프로토타입 체인에 대해서 살펴보았습니다. 프로토타입 체인만큼 중요한 개념 중 하나가 스코프를 이해하는 것입니다. 언어의 스코프를 제대로 이해하지 못하면 어떻게 코드가 실행되는지 알기 힘들기 때문에 실수가 나올 수밖에 없습니다. 이번 포스팅에서는 자바스크립트의 스코프와 그에 따른 몇몇 패턴에 대해서 한 번 살펴보겠습니다. 함수형 스코프 자바스크립트는 기본적으로 함수형 스코프를 가집니다. (EcmaScript6에서부터는 let과 const를 이용하여 블록 레벨 스코프를 사용할 수 있습니다.) var x = 10; if(true) { var y = 100; console.log('local x :', x); //local x : 10 console.log('local y :', y); //l.. 2023. 3. 13.
[JS] 프로토타입 체인 (Prototype Chain) 이전 포스팅에서는 프로토타입의 개념에 대해서 한 번 알아봤었는데, 프로토타입 체인을 잘 이해하기 위해서는 자바스크립트에서 프로토타입을 기반으로 어떻게 객체지향을 구현해내는지에 집중해서 볼 필요가 있습니다. 프로토타입 체인이라는 개념은 처음에는 이해하기 어려운 개념일 수 있는 만큼 최대한 자세하게 살펴보도록 하겠습니다. 프로토타입 체인 특정 객체의 메서드나 프로퍼티에 접근하고자 할 때, 해당 객체에 접근하려고 하는 프로퍼티나 객체가 없다면 프로토타입 링크([[Prototype]] 프로퍼티)를 따라 자신의 부모 역할을 하는 프로토타입 객체를 차례로 검색합니다. 이를 프로토타입 체인이라고 합니다. var developer = { name : 'BKJang', age : 25, gender : 'male' };.. 2023. 3. 8.
728x90