IT&컴퓨터공학/Javascript

[Javascript] var 변수의 특징과 const, let 의 차이점

yan_z 2021. 1. 18. 22:46

var 

 

1. function 단위의 scope 를 가진다.

var str = "hello !";

function func(){
    var str = "hello in function !"
    console.log(str);
}


console.log(str); // 결과 : hello !
func(); // 결과 : hello in function !

- 위의 코드에서 볼 수 있듯이 function 안에있는 var 변수의 유효범위는 ' function 내 ' 이다

 

var str = "hello !";


if(true){
    var str = "hello in if sentence!";
}

console.log(str); // 결과 : hello in if sentence!

- var 변수의 유효범위는 { } 안이 아니라 function 내이므로 , 위의 예제의 str 이 { } 바깥에서도 변경되었다

- 즉, 위의 str = "hello !" 가 없더라도 , if문 안의 str이 마치 전역변수처럼 사용될 수 있다

 

2. 한번 선언된 변수를 다시 선언 할 수 있다.

var name="aa";
console.log(name);

var name ="bb";
console.log(name);

 

3. 선언 전에 사용할 수 있다. 왜 ? - 호이스팅 때문에. 그러나 선언만 호이스팅 되고 할당은 호이스팅 되지 않으므로 undefined 로 찍힌다.

console.log(name); // undefined; -> 즉 오류가 뜨진 않는다

var name = "aa";

 

 

이러한 var 의 단점을 보완하기 위해서 추가 된 변수 선언방식이 let 과 const 이다.

 

let / const

let name="aa";
console.log(name);

let name ="bb";
console.log(name);

해당 코드는 오류가 발생한다. 즉 변수 재선언이 되지않는다. ( const 도 마찬가지 )

 

그렇다면 let 과 const 의 차이점은 무엇인가 ?

let name="aa";
console.log(name);

name = "bb";
console.log(name);

let 은 위와같이 변수 재할당이 가능하다

 

const name="aa";
console.log(name);

name = "bb";
console.log(name);

그러나 let을 const 로 바꾼 위 코드는 오류를 생성한다. 즉 const 는 변수 재할당이 불가능하다.