JS ES6 도입 후 var 키워드를 사용하지 않는 이유

김태경·2022년 9월 24일
1
post-thumbnail

ES6 도입 이후 현대의 JS 프로그래밍에서는 var 키워드를 사용하지 않고 let과 const를 사용한다.

옆 사람이 var를 사용한다면 뚝배기를 깨자!

var를 사용하지 않는 이유가 뭘까염?

숨 참고 JS deep dive

일반적으로 다른 프로그래밍 언어는 block-level scope로 동작하는 반면에 ES5(var 키워드만 있던 시절) JS에서는 function-level scope로 동작했다.

여기서 scope는 변수를 접근할 수 있는 범위 => 지역, 전역 변수

그래서 이 둘의 차이점은 ?

block-level scope는 일반적인 프로그래밍 언어에서 지원하는
( while, for, if, function.. 등 ) 해당 문법안에서 선언한 변수들은
모두 해당 Block { } 안에서만 유효한 지역 변수로 사용되어 Block 밖에서는 사용할 수 없다는 특징이 있다.

But,

function-level scope에서는 ( while, for, if.. 등 ) 모두 제외하고
function에서만 지역적으로 사용할 수 있다는 특징이 있다. 그러므로
( for, while if.. ) 등에서 선언한 변수를 해당 Block 밖에서도 사용이 가능한 전역 변수가 된다는 특징이 있다.

그러므로 function-level scope이 되면 지역 변수과 전역 변수의 구분이 애매하게 되고 프로그래밍적으로 좋지 못한 코드가 될 가능성이 높다고 생각한다. 그래서 block-level scope이 더 체계적이라고 할 수 있을 것 같다.

block-level scope와 function-level scope의 이야기를 한 이유는 "var 키워드는 function-level scope" 이기 때문 ㅇㅇ

그럼 var를 사용하지 않는 이유는 function-level scope 하나의 이유뿐일까??

var를 사용하지 않는 이유는 하나 더 있음. hoisting을 지원하는 특징 때문

hoisting 이란 어디에 선언했는지에 상관없이 제일 위로 끌어올려 주는 것.
그런데 이게 변수에 적용되면 변수를 선언하기도 전에 사용하여 값을 조작할 수 있고, 아래에서 그 변수를 다시 선언할 수 있다.

말만 들어도 var는 쓰레기 같음
그래서 ES6( let, const ) 도입 이후 JS 에서는 var를 사용하지 않습니다!

++ 추가로 변수를 만들 때 값을 수정할 일이 없다면 const 키워드를 사용하는 것이 더 좋습니다.

크게 3가지 이유가 있음!

  • Security (보안)
  • Thread safety (여러 쓰레드가 동시에 수정하는 작업을 방지)
  • 협업 or 실수 방지

왜 이 3가지가 이유인지 생각하거나 구글링 해봅시다!!! 몰라서 그런 거 아님 ㅎ

이제 여러분들은 지나가던 강아지가 var를 왜 쓰면 안 되는지 물어봤을 때 멋지게 대답하실 수 있습니다.

profile
FE 뉴비

0개의 댓글