변수 질문/답변

어승준·2023년 10월 4일

JS 스터디

목록 보기
1/26
post-thumbnail

📌 변수 호이스팅(variable hoisting)에 대해서 설명해주세요

  • 호이스팅(Hoisting)이란 함수 내의 변수 및 함수 선언을 각 유효 범위의 최상단으로 끌어 올려주는 JS의 독특한 특징이다.
  • 선언문이 있는 코드라인을 물리적으로 최상단으로 끌어올렸기 때문이 아니라, JS 엔진이 먼저 전체 코드를 스캔하면서 변수 같은 정보를 실행 컨텍스트 어딘가에 미리 기록해놓기 때문. 이 때 기록해놓는 곳이 environment record(환경 레코드)로 식별자와 식별자에 바인딩된 값을 기록

📌 nullundefinedundeclared의 차이점은 무엇인가요? 어떻게 이 상태들에 대한 확인을 할 것인가요?

  • null
    • 변수가 선언되었지만 값이 없음을 나타냄
    • '===' 연산자로 확인 가능
  • undefined
    • 변수가 선언되었지만 값이 할당되지 않았을 때 기본적으로 갖는 값
    • 함수 내에서 매개변수를 정의하지 않았거나, 객체 속성에 값이 없는 경우 등에서 undefined가 발생할 수 있음
    • typeof 또는 '===' 연산자로 확인 가능
  • undeclared
    • 변수가 아예 선언되지 않은 상태를 나타냄
    • 변수를 var, let, const 키워드로 선언하지 않고 사용하려고 할 때 발생
    • typeof 연산자 또는 try-catch 문으로 확인 가능
  • 정리
    • null은 값이 존재하지만 아무 값도 없음을 나타내고, undefined는 값이 정의되지 않았음을 나타내며, undeclared는 변수 자체가 선언되지 않았음을 나타냄

📌 변수의 선언과 할당의 차이는 무엇인가요?

  • 선언 - 변수를 생성하고 메모리에 공간을 예약하는 단계
  • 할당 - 선언된 변수에 값을 대입하거나 초기화하는 단계

변수는 선언 후에는 값이 정의되지 않은(undefined) 상태이며, 값을 할당하면 변수는 해당 값을 가지게 됨


📌 let, var, const를 사용하여 생성된 변수들의 차이점은 무엇인가요?

스코프호이스팅중복 선언 가능재선언 가능값 변경 가능
var함수 스코프발생가능가능가능
let블록 스코프발생불가능오류 발생가능
const블록 스코프발생불가능오류 발생불가능

📌 변수의 초기화에 대해 설명해주세요.

  • 변수를 선언한 후에 값을 할당하는 것.

  • JS 엔진에 등록한 변수의 메모리 공간이 생성되고, 값이 없다면 undefined로 초기화되고, 변수에 메모리 주소값이 저장되는 단계이다.

let age1 = 56;
let age2;

위 코드의 경우 age1은 해당 메모리 주소에 56이라는 값이 저장되고 값이 없는 age2는 undefined로 메모리에 값이 저장된다.

profile
鈍筆勝聰(둔필승총) : '둔한 붓이 총명함을 이긴다' (서툴더라도 기록으로 남기는 것이 사람의 기억보다 훨씬 오래 보전된다) - 정약용

0개의 댓글