변수 타입(var, let, const)과 스코프(scope) 개념

Junghyun Park·2020년 12월 10일
0

var, let, const 의 차이

  • var는 function scope(함수블록 {}이외에는 모든 변수는 전역변수)이고 let과 const는 block scope(모든 코드 블록-if, for 등에서 선언된변수는 해당 코드 블록 내에서만 유효)임
    참고링크
  • var는 재선언 및 재할당이 가능하고, hoisting 가능
  • var는 초기값이 없으면 자동으로 undefined를 초기값으로 메모리 할당하므로 에러 발생 X
  • let은 재선언 불가, 재할당은 가능, const는 재선언 및 재할당 불가
  • let과 const는 hosisting 불가(Temporal Dead Zone이 선언과 초기화 사이에 생김)
  • 단, const로 변수 선언하더라도, object 자체 변경은 불가하지만, 내부의 속성 값 변경은 가능
    참고링크

변수 타입별 scope 차이

  • scope는 변수의 유효범위
  • 유효범위를 결정하는 두 가지 요소는 프로그래밍 구문만으로 유효범위를 정한는 lexical scope와 프로그램 실행 중에 유효범위를 정하는 dynamic scope가 있음 (lexical scope는 함수를 호출할 때가 아닌 함수를 선언할때 scope가 발생하는 개념 -> 헷갈리기가 쉬움) -https://www.zerocho.com/category/JavaScript/post/5740531574288ebc5f2ba97e
  • JS 변수는 변수의 유효범위에 따라 전역변수와 지역변수로 나뉨
  • scope chain은 내부함수부터 외부로 단계적으로 변수를 찾아가는 순서(내부함수에서 외부함수의 변수에 접근 가능하지만, 외부함수에서 내부함수 변수에 접근할 수 없음)
profile
21c Carpenter

0개의 댓글