변수 유효범위(Variable Scope)

lbr·2022년 7월 7일
0

변수 유효범위

const, let

function scope() {
  	console.log(a); // ReferenceError
	if (true) {
      	console.log(a); // undefined
    	const a = 123 // let도 동일
        console.log(a); // 123
    }
  	console.log(a); // ReferenceError
}
  • 블록레벨의 유효범위를 가집니다.

var

function scope() {
  	console.log(a); // undefined
	if (true) {
      	console.log(a); // undefined
    	var a = 123 // 
        console.log(a); // 123
    }
  	console.log(a); // 123
}
  • 함수레벨의 유효범위를 가집니다.
  • 범위가 넓은 만큼, 우리가 의도하지 않은 범위에서 변수가 사용이 될 수도 있으며, 그만큼 메모리를 차지하고 있고 그래서 개발자가 확인하지 못하는 메모리 누수로 발전할 수가 있습니다.
  • var라는 키워드 보단 constlet을 사용하는 것이 관리하기가 더 효과적입니다.

Undefined 와 ReferenceError의 차이점

Undefined

먼저 Undefined 속성은 Undefined 원시 값을 나타내며, JavaScript의 원시 자료형 중 하나입니다.

Undefined는 기본적으로 값이 할당되지 않은 변수는 Undefined타입이며 , Undefined타입은 변수 자체 값 또한 Undefined입니다 .

쉽게 말해서 Undefined는 변수는 선언하였지만 초기화를 하지 않아서 그 값을 원시값인 Undefined으로 주는 것입니다. 그러므로 엄밀히 말해서 Undefined값이 나온다고 오류가 난 것은 아닙니다 .
초기화 되지 않은 것이죠 .

ReferenceError

ReferenceError란 참조 에러입니다 .

ReferenceError란 객체는 존재하지 않는 변수를 참조했을 때 발생하는 에러를 나타냅니다.

객체를 생성하지 않았기에 참조할 값을 찾지 못했다고 이해하면 쉬울것 입니다.

0개의 댓글