[Essentials] 변수 유효 범위

일상 코딩·2022년 3월 27일
0

JavaScript

목록 보기
19/53
post-thumbnail

01.변수 유효 범위(Variable Scope)

1-1.let, const

  • 블록 레벨의 유효 범위를 가진다.
  • 블록 레벨: 변수가 선언되어져 있는 범위의 중괄호 내의 부분
function scope () {
  if (true) {
    const a = 123;
    console.log(a) // 값: 123
  }
}
scope();
  • 출력하는 변수a가 블록 레밸(유효 범위)안에 있기때문에 정상 출력된다.
function scope () {
  if (true) {
    const a = 123;
  }
  console.log(a) // ReferenceError
}
scope();
  • 출력하는 변수a가 블록 레밸(유효 범위)밖에 있기때문에 ReferenceError가 출력된다.
function scope () {
  if (true) {
    console.log(a) // 값: undefined
    const a = 123;
  }
}
scope();
  • 출력하는 변수a가 블록 레밸(유효 범위)안에 있지만 변수 선언하기전에 출력했기 때문에 undefined 메시지가 출력된다.

1-2.var

  • 함수 레벨의 유효 범위를 가진다.
  • 함수 레벨: 함수 범위 안에서는 어디서든 사용 가능
  • 의도하지 않은 범위에서 변수 사용이 가능해져 메모리 누수 발생
function scope () {
  if (true) {
    var a = 123
  }
  console.log(a) // 값: 123
}
scope()
  • 출력하는 변수a가 함수 레밸(유효 범위)안에 있기때문에 정상 출력된다.
function scope () {
  console.log(a) // 값: undefined
  if (true) {
    var a = 123
  }
}
scope()
function scope () {
  if (true) {
    console.log(a) // 값: undefined
    var a = 123
  }
}
scope()
  • 출력하는 변수a가 함수 레밸(유효 범위)안에 있지만 변수 선언하기전에 출력했기 때문에 undefined 메시지가 출력된다.
profile
일취월장(日就月將) - 「날마다 달마다 성장하고 발전한다.」

0개의 댓글