F-Lab
🚀
상위권 IT회사 합격 이력서 무료로 모아보기

자바스크립트 실행 컨텍스트와 디스 이해하기

writer_thumbnail

F-Lab : 상위 1% 개발자들의 멘토링

AI가 제공하는 얕고 넓은 지식을 위한 짤막한 글입니다!



자바스크립트 실행 컨텍스트와 디스 이해하기

자바스크립트는 웹 개발에서 가장 널리 사용되는 언어 중 하나입니다. 그러나 자바스크립트를 깊이 이해하기 위해서는 실행 컨텍스트와 디스(this) 키워드에 대한 이해가 필수적입니다. 이 글에서는 자바스크립트의 실행 컨텍스트와 디스에 대해 자세히 알아보겠습니다.

실행 컨텍스트는 자바스크립트 코드가 실행되는 환경을 정의합니다. 이는 코드가 실행될 때 필요한 변수, 객체, 함수 등을 포함합니다. 실행 컨텍스트는 크게 전역 컨텍스트와 함수 컨텍스트로 나눌 수 있습니다.

디스(this) 키워드는 자바스크립트에서 함수가 호출될 때 그 함수가 속한 객체를 참조합니다. 그러나 디스의 값은 함수가 호출되는 방식에 따라 달라질 수 있습니다. 이는 자바스크립트를 처음 배우는 사람들에게 혼란을 줄 수 있습니다.

이 글에서는 실행 컨텍스트와 디스의 개념을 이해하고, 이를 실제 코드에서 어떻게 사용하는지 예제를 통해 살펴보겠습니다. 왜냐하면 이러한 개념들은 자바스크립트의 동작 원리를 이해하는 데 매우 중요하기 때문입니다.

자바스크립트의 실행 컨텍스트와 디스에 대해 깊이 이해하면, 더 나은 코드 작성과 디버깅이 가능해집니다. 이제 본격적으로 자바스크립트의 실행 컨텍스트와 디스에 대해 알아보겠습니다.



실행 컨텍스트란 무엇인가?

실행 컨텍스트는 자바스크립트 코드가 실행되는 환경을 정의합니다. 이는 코드가 실행될 때 필요한 변수, 객체, 함수 등을 포함합니다. 실행 컨텍스트는 크게 전역 컨텍스트와 함수 컨텍스트로 나눌 수 있습니다.

전역 컨텍스트는 자바스크립트 코드가 처음 실행될 때 생성됩니다. 이는 전역 변수와 전역 함수를 포함합니다. 전역 컨텍스트는 코드가 종료될 때까지 유지됩니다.

함수 컨텍스트는 함수가 호출될 때마다 생성됩니다. 이는 함수 내부의 변수와 함수를 포함합니다. 함수가 종료되면 함수 컨텍스트는 사라집니다.

실행 컨텍스트는 렉시컬 환경(Lexical Environment)과 변수 환경(Variable Environment)으로 구성됩니다. 렉시컬 환경은 현재 실행 중인 코드의 스코프 체인을 포함합니다. 변수 환경은 함수 내부의 변수와 함수를 포함합니다.

왜냐하면 실행 컨텍스트는 자바스크립트 코드가 실행되는 환경을 정의하기 때문에, 이를 이해하는 것은 자바스크립트의 동작 원리를 이해하는 데 매우 중요하기 때문입니다.



디스(this)란 무엇인가?

디스(this) 키워드는 자바스크립트에서 함수가 호출될 때 그 함수가 속한 객체를 참조합니다. 그러나 디스의 값은 함수가 호출되는 방식에 따라 달라질 수 있습니다.

일반적으로 디스는 함수가 호출될 때 그 함수가 속한 객체를 참조합니다. 예를 들어, 객체의 메소드가 호출될 때 디스는 그 객체를 참조합니다.

그러나 함수가 전역 컨텍스트에서 호출될 때 디스는 전역 객체를 참조합니다. 브라우저 환경에서는 전역 객체는 윈도우 객체입니다.

또한, 함수가 스트릭트 모드에서 호출될 때 디스는 undefined를 참조합니다. 스트릭트 모드는 자바스크립트의 엄격한 모드로, 더 안전한 코드를 작성할 수 있게 합니다.

왜냐하면 디스의 값은 함수가 호출되는 방식에 따라 달라질 수 있기 때문에, 이를 이해하는 것은 자바스크립트의 동작 원리를 이해하는 데 매우 중요하기 때문입니다.



실행 컨텍스트와 디스의 관계

실행 컨텍스트와 디스는 밀접한 관계가 있습니다. 함수가 호출될 때마다 새로운 실행 컨텍스트가 생성되고, 이 실행 컨텍스트는 디스의 값을 결정합니다.

예를 들어, 객체의 메소드가 호출될 때 새로운 함수 컨텍스트가 생성되고, 이 함수 컨텍스트는 디스의 값을 그 객체로 설정합니다. 이는 함수 내부에서 디스를 사용하여 그 객체의 속성에 접근할 수 있게 합니다.

반면에, 함수가 전역 컨텍스트에서 호출될 때 새로운 함수 컨텍스트가 생성되고, 이 함수 컨텍스트는 디스의 값을 전역 객체로 설정합니다. 이는 함수 내부에서 디스를 사용하여 전역 객체의 속성에 접근할 수 있게 합니다.

또한, 함수가 스트릭트 모드에서 호출될 때 새로운 함수 컨텍스트가 생성되고, 이 함수 컨텍스트는 디스의 값을 undefined로 설정합니다. 이는 함수 내부에서 디스를 사용하여 전역 객체의 속성에 접근할 수 없게 합니다.

왜냐하면 실행 컨텍스트는 디스의 값을 결정하기 때문에, 이를 이해하는 것은 자바스크립트의 동작 원리를 이해하는 데 매우 중요하기 때문입니다.



실행 컨텍스트와 디스의 예제

실행 컨텍스트와 디스의 개념을 이해하기 위해 실제 코드를 살펴보겠습니다. 아래는 객체의 메소드가 호출될 때 디스의 값을 보여주는 예제입니다.

const obj = {
    name: 'John',
    greet: function() {
        console.log(this.name);
    }
};
obj.greet(); // 'John'

위 예제에서 greet 메소드는 obj 객체의 메소드로 호출됩니다. 따라서 디스는 obj 객체를 참조하고, this.name은 'John'을 출력합니다.

다음은 함수가 전역 컨텍스트에서 호출될 때 디스의 값을 보여주는 예제입니다.

function greet() {
    console.log(this);
}
greet(); // Window 객체 (브라우저 환경에서)

위 예제에서 greet 함수는 전역 컨텍스트에서 호출됩니다. 따라서 디스는 전역 객체를 참조하고, 브라우저 환경에서는 윈도우 객체를 출력합니다.

마지막으로, 함수가 스트릭트 모드에서 호출될 때 디스의 값을 보여주는 예제입니다.

'use strict';
function greet() {
    console.log(this);
}
greet(); // undefined

위 예제에서 greet 함수는 스트릭트 모드에서 호출됩니다. 따라서 디스는 undefined를 참조하고, undefined를 출력합니다.

왜냐하면 실행 컨텍스트와 디스의 관계를 이해하는 것은 자바스크립트의 동작 원리를 이해하는 데 매우 중요하기 때문입니다.



결론

자바스크립트의 실행 컨텍스트와 디스는 자바스크립트의 동작 원리를 이해하는 데 매우 중요한 개념입니다. 실행 컨텍스트는 자바스크립트 코드가 실행되는 환경을 정의하고, 디스는 함수가 호출될 때 그 함수가 속한 객체를 참조합니다.

실행 컨텍스트는 전역 컨텍스트와 함수 컨텍스트로 나눌 수 있으며, 렉시컬 환경과 변수 환경으로 구성됩니다. 디스는 함수가 호출되는 방식에 따라 값이 달라질 수 있습니다.

실행 컨텍스트와 디스의 관계를 이해하면, 자바스크립트 코드의 동작 원리를 더 잘 이해할 수 있습니다. 이는 더 나은 코드 작성과 디버깅에 도움이 됩니다.

이 글에서는 실행 컨텍스트와 디스의 개념을 이해하고, 이를 실제 코드에서 어떻게 사용하는지 예제를 통해 살펴보았습니다. 왜냐하면 이러한 개념들은 자바스크립트의 동작 원리를 이해하는 데 매우 중요하기 때문입니다.

자바스크립트의 실행 컨텍스트와 디스에 대해 깊이 이해하면, 더 나은 코드 작성과 디버깅이 가능해집니다. 이제 여러분도 자바스크립트의 실행 컨텍스트와 디스를 이해하고, 이를 실제 코드에서 활용해 보시기 바랍니다.

ⓒ F-Lab & Company

이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.

조회수
F-Lab
소개채용멘토 지원
facebook
linkedIn
youtube
instagram
logo
(주)에프랩앤컴퍼니 | 사업자등록번호 : 534-85-01979 | 대표자명 : 박중수 | 전화번호 : 1600-8776 | 제휴 문의 : info@f-lab.kr | 주소 : 서울특별시 강남구 테헤란로63길 12, 438호 | copyright © F-Lab & Company 2025