[영상후기] [코딩만화] Scope가 뭔가요? (feat: let, const, var의 차이)

박철현·2023년 3월 12일
0

영상후기

목록 보기
30/160

movie

Scope

  • 각 상수나 변수 등의 요소들이 허용된 범위
    • 로컬 상수나 변수들은 블럭 안에서만 살수있음
      • 프로세스 메모리 공간 중 stack 영역 생성
    • 정적변수 : 클래스의 객체 생성할 필요 없이 프로그램 종료될때까지 살아남음
    • 전역 변수와 동일한 지역변수를 선언하고 해당 스코프 내에서 호출할 시 지역변수가 호출됨
      • 명령어가 속한 스코프의 바깥쪽으로 해당 이름의 변수나 상수, 함수를 탐색하기 때문
        • 스코프 내 탐색 → 없으면 전역스코프 까지 탐색
      • 전역변수 사용 시 의도치 않게 변수 이름 등이 겹칠 경우 충돌이나 오류가 발생할 여지가 있기에 불가피한 경우가 아니라면 사용하지 않음

const, let, var

const, let

  • const : 선언할때 값을 넣어줘야하고 한번 넣은 값은 변경 불가한 상수

  • let : 선언과 값 정의 따로 가능, 넣은 값을 변경 가능, 선언을 다시 하는건 불가능

  • const나 let 변수는 선언 전에 사용하면 Reference Error 발생

    • const나 let도 속한 스코프의 최상단으로 호이스팅 되지만, 선언되어 초기화 전에는 TDZ(Temporal Dead Zone)에 속하고 이후에 선언된 것들을 사용하면 오류
  • 블록 내부 scope : 블록 내부에서만 사용될 수 있는 제한 범위

var

  • var : 값 변경, 또다시 선언 가능
    • 익스플로러에서 var만 지원(IE 11부터는 const, let 가능)
    • 선언 전 사용해도 오류 없이 코드 동작 가능(결과는 undefined로 뜸) - 호이스팅
  • 함수 스코프 : 변수는 함수 안에 블록에 선언 되었다고 하더라도 함수 내 어디든 사용 가능
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글

관련 채용 정보