nodejs 교과서 정리) 1. 호출 스택에서 몰랐던 점

김경진·2023년 7월 23일
0

nodejs 교과서 정리

목록 보기
1/1

노드 개발자의 기초 쌓기

인공지능 공부로 컴퓨터의 세계로 들어왔지만 현재 노드를 통해 백엔드 개발을 하고 있다.
아무것도 모르고 이렇게 만들면 되는거야 주먹구구 식으로 개발하기에는 한계가 있기에 nodejs 교과서를 통해서 기초를 쌓아보고자 시작했다.

정리하다가 새롭다거나 재미있는 것들 위주로 포스팅 해보려 한다.

호출 스택

기본적으로 실행 순서가 정해지는 방법으로 생각하면 좋을 것 같다.
아래 사진에서 first() 내에서 second()를, second() 내에서 third()를 실행하면 아래와 같이 실행 될 것이다.

그런데 내가 몰랐던 내용은 anonymous다. 파일이 실행되면 그냥 맨 아래 기본적으로 쌓여있는 실행 컨텍스트라고 설명해주는데 모르겠다..

nodejs에서 anonymous 컨텍스트란?

역시 모르면 요즘에는 chat gpt다. 바로 질문했다.

이해한 바로는 아래와 같다. (nodejs 환경에서)

  1. 호출 스택 내의 하나의 스택 단위는 "함수"
  2. 파일 실행 시 anomymous 컨텍스트가 추가 됨
  • 이유: 파일 실행 시 파일은 함수가 아니기 때문에 js에서 anonymous라는 이름을 붙여 호출 스택에 추가

자세한 설명

JavaScript에서 파일은 모듈 또는 스크립트로 구분되며, 기본적으로 모든 js 호출 스택에는 맨 아래에 "anonymous" 컨텍스트가 있습니다. 이는 파일 내의 코드들이 전역 범위에서 실행되는 컨텍스트를 의미합니다.

JavaScript 파일이 실행되면 해당 파일 내의 코드들이 모듈 또는 스크립트로서 실행되는데, 이때 파일 내의 코드들은 하나의 큰 함수로 감싸지지 않습니다. 그래서 해당 코드들은 자바스크립트 엔진에 의해 기본적으로 "anonymous" 함수로 처리됩니다.

이렇게 파일 내의 코드들이 "anonymous" 함수로 처리되는 것은 변수와 함수들이 해당 파일의 범위를 벗어나지 않도록 하는데 도움이 됩니다. 즉, 파일 내에서 정의된 변수와 함수들은 기본적으로 파일 내부에서만 유효하게 되고, 다른 파일이나 스크립트에서는 접근할 수 없게 됩니다.

호출 스택은 코드들이 실행될 때 해당 컨텍스트들이 스택에 추가되고 제거되는 방식으로 동작하므로, 파일이 실행될 때 맨 아래에 "anonymous" 컨텍스트가 위치하게 됩니다. 그리고 이후에 함수 호출 등으로 인해 다른 컨텍스트들이 호출 스택에 추가되면서 "anonymous" 컨텍스트 위에 쌓이게 됩니다.

이러한 방식은 JavaScript에서 파일 단위로 범위(scope)를 제어하는데 유용하며, 모듈화와 변수 간의 충돌을 방지하는 데 도움이 됩니다.

그래서 컨텍스트란?

  • 컨텍스트(context)는 프로그램이 실행될 때 변수와 함수에 접근하고 실행 결과를 저장하는 환경을 의미합니다. 이것은 프로그램이 실행되는 동안 해당 실행 컨텍스트에 따라 변수와 함수의 유효 범위(scope)와 값이 결정됩니다. 호출 스택(call stack)은 이러한 실행 컨텍스트들이 스택 자료구조에 쌓이고 제거되는 과정을 관리하는 방법 중 하나입니다.

->

  • 변수와 함수의 유효범위 케이스

js에서 anonymos 컨텍스트가 없는 호출 스택이 있는가?

없다.

1개의 댓글

comment-user-thumbnail
2023년 7월 23일

좋은 정보 얻어갑니다, 감사합니다.

답글 달기