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 는 변수 재할당이 불가능하다.