자바스크립트 변수 선언 종류

고유·2022년 3월 10일
1

자바스크립트

목록 보기
1/6

1. var

저 멀리 떠나가라

1) ES6 이전의 유일한 변수 선언 타입

  • 자바스크립트는 유연성과 자유도가 굉장히 높은 언어이다.
  • 하지만 이러한 점은 오히려 개발 시 독이 되기 마련인데 var이 대표적인 예였다.
  • var의 문제점이었던 세 가지를 보자.

2) 호이스팅

  • 호이스팅이란 코드가 실행되기 전 브라우저가 파일을 읽으며 코드를 정렬할 때 특정 코드를 제일 위로 올려버리는 것을 말한다.
  • 변수를 할당한 후에 선언을 해도 호이스팅에 의해 정상 작동해버리는 굉장히 높은 유연성이 있었다.

3) 블락 스코프 무시

  • 일반적으로 코드는 '밖에서는 안을 볼 수 없고 안에서는 밖을 볼 수 있다'라는 규칙을 가진다.
  • 그러나 var은 조건문과 같은 블락 스코프에서 이러한 점을 무시했다.
  • 함수의 블락 스코프는 무시 안함

4) 상수와 변수의 구분이 없음

  • 자바스크립트는 boolean, number, string 등등 모든 변수 타입을 var로 선언했다.
  • 상수와 변수 또한 구분이 없었다.

5) 재선언 재할당 가능

  • 변하는 값을 담는 변수니까 재할당은 그렇다쳐도 변수를 다시 선언하는 것까지 가능했었다.

6) 정리

  • 위 문제점들은 자바스크립트의 높은 자유도와 유연성에 비롯했으나 프로젝트가 커지면 사용했던 변수를 다시 사용하는 등 혼란을 야기할 수 있는 등 오히려 독이 되는 점들이다.
  • 타입스크립트도 그러한 이유로 자바스크립트의 슈퍼셋으로 나온 것이다.

2. const와 let

기본적으로 const, 예외적일 때 let

1) ES6 이후의 변수 선언 타입

  • 위 var의 문제점들을 해결하였고 고정적인 값을 담는 선언 타입인 const와 변하는 값을 담는 선언 타입인 let이 출시되었다.
  • 호이스팅, 블락 스코프 무시의 문제를 해결함

2) const

  • 상수(Immutable)의 역할을 한다.
  • 편의상 변수라고 하겠지만 엄연히 말하면 상수이다.
  • 한 번 값을 할당하면 그 변수에는 다시는 다른 값을 담을 수 없다.

3) let

  • 변수(Mutable)의 역할을 한다.
  • 안정성을 위해 기본적으로는 const를 사용하나 어떤 로직에 의해 변수의 값을 변화시켜야 하는 예외적인 경우에만 let을 사용한다.

3. 생각

  • 높은 자유도와 유연성이 처음에는 편리하다고 느낄 수 있을 것 같다.
  • 하지만 확실히 프로젝트가 커졌을 때 위에서 상기한 문제가 발생하면 그 변수를 토대로 만들어 놓은 로직을 다 수정해야 된다고 생각하면 어질어질하다..
  • 타입스크립트를 배우는 이유를 다시 한 번 느꼈고 var은 사용금물임을 깨달았다.
  • (C언어는 변수를 기본적으로 사용하고 상수를 예외적으로 사용했었는뎁)
profile
프론트엔드

0개의 댓글