전역 변수의 문제점 질문/답변

어승준·2023년 10월 4일

JS 스터디

목록 보기
5/26
post-thumbnail

📌 전역변수의 문제점 2가지 이상 말해 주세요.

  • 암묵적 결합
    • 변수의 유효 범위가 커지면서 코드의 가독성은 나빠지고,
    • 의도치 않게 상태가 변경될 수 있는 위험성도 높아진다.
  • 긴 생명 주기
    • 즉, 메모리 리소스를 오랜 시간 소비한다.
    • 특히 var 키워드는 변수의 중복 선언을 허용하므로 생명 주기가 긴 전역 변수는 변수 이름이 중복될 수 있고, 변수 이름이 중복되면 의도치 않은 재할당이 이뤄진다.
  • 네임스페이스 오염
    • 자바스크립트는 파일이 분리되어 있어도 하나의 전역 스코프를 공유한다.
    • 다른 파일에서 동일한 이름으로 명명된 전역 변수나 전역 함수가 같은 스코프 내에 존재할 경우 예상치 못한 결과를 가져올 수 있다.
  • 스코프 체인 상에서 종점에 존재
    • 변수를 검색할 때 가장 마지막에 검색된다. 즉 검색 속도가 가장 느리다.

📌 전역 변수를 활용해서 개발해본 경험을 들어주세요

  • 로그인 정보를 recoil 등의 상태 관리 라이브러리로 전역변수로서 저장하여, 다른 컴포넌트에서 사용

📌 전역 변수를 최소화하기 위한 방법은 어떤 것들이 있나요?

▶️ 모듈 패턴

  • 변수와 함수가 해당 모듈 내부에서 캡슐화되어 전역 스코프와 격리됨

▶️ IIFE(즉시 실행 함수 표현식)

  • 해당 함수 내에서 선언된 변수는 지역 스코프로 제한됨

▶️ let, const 사용

  • 블록 스코프 변수를 선언하여 지역 변수로서 활용 가능

📌 지역 변수와 전역 변수의 생명 주기에 대해 설명해 주세요.

▶️ 지역 변수 생명 주기

  • 지역 변수는 해당 변수가 선언된 함수나 블록 내에서만 유효합니다. 함수나 블록의 실행 범위에 따라 변수가 생성되고 소멸합니다. 이를 "지역 스코프"라고 합니다.

▶️ 전역 변수 생명 주기

  • 전역 변수는 프로그램의 시작부터 끝까지 존재하며 어디서든 접근할 수 있습니다. 전역 변수의 생명 주기는 프로그램이 실행되는 동안 계속 유지됩니다.

📌 var, let, const 로 지역 변수를 선언하는 방법에 대해서 설명해 주세요.

▶️ var

  • ES5 이전에 사용되던 변수 선언 키워드로, 함수 스코프를 가집니다.
  • 따라서 함수 내에서 선언된 변수는 해당 함수 내에서만 유효하며, 호이스팅 현상이 발생합니다.
  • 새로운 변수를 선언할 때 var를 사용하면 전역 스코프에 변수가 등록될 수 있으므로 주의가 필요합니다.

▶️ let

  • ES6에서 도입된 변수 선언 키워드로, 블록 스코프를 가집니다.
  • 함수 내부 뿐만 아니라 블록 내에서도 유효하며, 호이스팅은 발생하지만 초기화되지 않은 상태로 변수를 사용할 수 없습니다.

▶️ const

  • const는 let과 마찬가지로 블록 스코프를 가지며, 변수를 선언과 동시에 초기화해야 합니다.
  • const로 선언된 변수는 재할당이 불가능하며, 상수로 사용되어야 합니다. 그러나 객체나 배열의 경우, 변수가 가리키는 객체나 배열의 내부 내용은 수정될 수 있습니다.
profile
鈍筆勝聰(둔필승총) : '둔한 붓이 총명함을 이긴다' (서툴더라도 기록으로 남기는 것이 사람의 기억보다 훨씬 오래 보전된다) - 정약용

0개의 댓글