728x90

변수의 유효범위 Variable Scope

 

🚨 let, const

let, const는 블록 레벨의 유효 범위를 가진다.

블록의 범위는 변수가 선언된 중괄호 안을 의미한다.

 

📍 중괄호 밖으로 벗어날 경우 Error

function scope() {
  if (true) {
    const a = 123
    }
  console.log(a)
}

scope()

 

📍 값이 할당되는 코드보다(변수보다) 먼저 출력될 경우 -> undefined

function scope() {
  if (true) {
    console.log(a)
    const a = 123
    }
}

scope()

 

 

🚨 var

var는 함수 레벨의 유효 범위를 가진다. 값이 지정대기 전에 사용되면 undefiend가 뜨는 건 동일하다.

레벨이 커짐으로 인해 의도하지 않은 범위에서 사용될 수 있으며 개발자가 확인하지 못하는 메모리 누수로 발전될 수 있으므로 블록레벨의 유효범위를 가지도록 관리하는 것이 효과적, 현재는 잘 사용하지 않는다.

 

📍 함수 레벨 안에서 정상적으로 작동

function scope() {
  if (true) {
    var a = 123
    }
  console.log(a)
}

scope()

 

728x90
+ Recent posts