js의 var,let,const의 차이

Viva의 놀이터·2020년 8월 19일
0

JavaScript

목록 보기
1/6
post-thumbnail

왜 let과 const가 등장했는가?

var의 문제점

1번째

호이스팅의 문제점

var은 호이스팅이라는 문제점을 발생 시키는데 hoisting은 var을 어디다 선언하든 상관없이 선언을 코드의 위쪽으로 끌어 올려주는 현상이다.

왜 호이스팅의 문제가 있나요?

console.log(name);
name = 'dong';
console.log(name);
var name = 'hyun';

var name이라는 변수가 가장먼저 인식이 되고 첫번째 문장인
console.log(name); 가 정상 실행된다. 하지만 호이스팅은 var name까지만 위로 올리고 그 뒤에 할당부분은 가지고 올라가지 않는다.
즉 console.log(name);의 실행결과는 undefined가 나온다.

이러한 문제를 해결하기위해 let과 const가 등장하였고 let과 const는
호이스팅이 발생하지 않는다. let과 const는 기존의 c언어나 자바처럼 변수를 먼저 선언을 하고 그 다음에 사용이 가능하다.

console.log(name);   //name이 정의되어있지 안하서 오류 발생
name = 'dong'; //name이 정의되어있지 안하서 오류 발생
console.log(name); //name이 정의되어있지 안하서 오류 발생
let name = 'hyun'; //name이 정의됨

2번째

var은 scope를 무시한다.

초기 js에서는 var만이 존재하였다. var은 함수기반의 스코프에서 돌아간다.

함수 스코프안에서 var로 작성된 선언문이 한번 실행된다면 그 함수가 종료되기 전까지 유효하다.

보통 함수의 스코프는 전역스코프와 동일하게 작동함으로 var 변수를 사용할 때 함수 스코프와 전역 스코프간에 오류가 발생할수도 있다. 이를 보완하기 위해 2015년도에 ES6의 let const가 나왔다.

letconst는 함수 스코프에서 적용되는 것이 아니라 블록스코프에서 적용되기 때문에 var에서 발생하던 문제들이 해결된다.

하지만 letconst도 차이가 있는데

let에 값이 할당된후에도 값이 별할수있지만

const는 값이 할당된후에 재할당할수없다.

profile
역사를 잊은 기술에겐 미래가 없다

0개의 댓글