Javascript Deep Dive / 23.01.17 내용 정리

Sangho Dev 💻 회고록·2023년 1월 20일
0

심벌테이블

컴파일러 또는 인터프리터는 심벌 테이블이라고 부르는 자료 구조를 통해 식별자를 키로 바인딩된 값의 메모리 주소, 데이터타입, 스코프 등을 관리한다.

데이터 타입이 필요한 이유

  • 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
  • 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
  • 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해

동적 타이핑

  • 정적타입언어
    변수 선언 시점에 변수의 타입이 결정되고 변수의 타입을 변경할 수 없다. C, C++, Java, Kotlin, Go 등이 있다.
  • 동적타입언어
    값을 할당하는 시점에 변수의 타입이 동적으로 결정되고 변수의 타입을 언제든지 자유롭게 변경할 수 있다. 자바스크립트가 대표적인 예이고, Python, PHP 등이 있다.

즉 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론) 된다. 그리고 재할당에 의해 언제든지 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑 이라고 한다.
동적 타입 언어의 특징은 데이터 타입에 대해 무감각해질 정도로 편리하다는 것이다. 이 때문에 구조적인 단점이 발생하는데, 개발자의 의도와 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동으로 변환되기도 하고, 잘못된 예측을 초래한다. 결국 동적 타입 언어는 유연성은 높지면 신뢰성은 떨어진다.

변수를 사용할 때 주의할 사항

  • 변수의 개수가 많으면 많을수록 오류가 발생할 확률도 높아지므로, 변수의 무분별한 남발은 금물이며, 필요한만큼 최소한으로 유지
  • 변수의 유효 범위(스코프)는 최대한 좁게 만들어 변수의 부작용을 억제
  • 전역 변수는 최대한 사용하지 않도록 한다. 어디서든지 참조/변경 가능한 전역변수는 의도치 않게 값이 변경될 가능성이 높고 다른 코드에 영향을 줄 가능성도 높다.
  • 변수보다는 상수를 사용해 값의 변경을 억제
  • 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍. (변수 이름 뿐 아니라 모든 식별자)
profile
빨리 가는 유일한 방법은 제대로 가는 것이다. (로버트 C.마틴, <클린 코드>의 저자)

0개의 댓글