본문 바로가기
카테고리 없음

var, let, const의 변수 범위

by kjwkjw 2021. 8. 28.

일반 적으로 JAVA의 변수는 하나의 블락은 기준으로 생성되고 소멸한다.

 

for(int i = 0; i <= 10; i++){
  if(i%2){
      int x = i;
  }
 }

 다음과 같이 for문안에서 정의된 변수 i는 for문의 바깥에서 사용이 불가능 하며 변수 x또한 if문 바깥에서 사용이 불가능하다.

 

자바스크립트의 const와 let 키워드로 생성된 변수도 마찬가지로 일반적인 변수와 같이 블럭을 기준으로 생성하고 소멸된다.

 

for(let i = 0; i < =10; i++){
	console.log(i);
}
console.log(i);

i변수는 let 키워드로 for문 안에서 생성됐기 때문에 for문 내에서는 정상적으로 출력되지만 for문을 벗어나면 정의되지 않는 변수를 참조했다는 오류가 발생한다.  const키워드로 생성된 변수도 let과 같은 유효범위를 갖는다.

 

그러나 var 키워드로 생성된 변수는 블럭이 기준이 아닌 함수를 기준으로 유효범위를 갖는다.

 

function print(){
	for(let i = 0; i <= 10; i++){
		if(i==7){
        	var x = i;
        }
    }
    console.log("x = "+x);
}
print();

x변수는 for문의 if문 안에서 생성됐다. 다른 변수와 같은 유효범위를 갖는다면 if문 내에서만 접근이 가능하지만 var 키워드로 생성됐기 때문에 함수 전역에서 접근이 가능하다.

 

const 키워드와 let키워드의 차이점은 const로 생성된 변수를 변수값을 변경할 수 없지만 let으로 생성된 변수는 변경이 가는하다는 점이다.

댓글