데이터 타입에 의한 메모리 공간의 확보와 참조
- 숫자, 문자열타입 외의 데이터 타입의 크기를 명시적으로 규정하고 있지 않다.
- 숫자 = 배정밀도 64비트 부동소수점 형식을 사용( 8비트 ) ( 위키 참조 )
- 심벌 테이블 : 컴파일러 또는 인터프리터는 심벌 테이블 이라고 부르는 자료 구조를 통해 식별자를 키로 바인됭 된 값의 메모리주소, 데이터타입, 스코프 등을 관리한다
데이터 타입에 의한 값의 해석
- 예를들어 메모리에 저장된 값 0100 0001을 숫자로 해석하면 65인데, 문자열로 해석하면 'A'이다.
- var score = 65; 일 경우, score에 할당된 값은 숫자 타입의 값으로, socre 변수를 참조하면 메모리 공간의 주소에서 읽어들인 2진수를 숫자로 해석한다.
데이터 타입이 필요한 이유
- 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
- 값을 참조할 때 한번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
- 메모리에서 읽어들인 2진수를 어떻게 해석할지 결정하기 위해
동적 타입 언어와 정적 타입 언어
정적 타입 언어
- C나 JAVA 같은 정적 타입 언어는 변수를 선언할 때 변수에 할당할 수 있는 값의 종류, 즉 데이터 타입을 사전에 선언해야 한다. 이를 명시적 타입 선언 이라 한다.
- 정적 타입 언어는 변수의 타입을 변경할 수 없으며, 변수에 선언한 타입에 맞는 값만 할당할 수 있다.
- 대표적인 정적 타입 언어 : C, C++, JAVA, KOTLIN, GO, HASKELL, RUST, SCALA 등...
동적 타입 언어
- 자바스크립트는, 동적 타입의 언어 이다.
- 동적 타입 언어는 변수에 어떤 데이터 타입의 값이라도 자유롭게 할당할 수 있다.
- 그렇기에 동적 타입 언어의 변수는 값의 변경에 의해 타입도 언제든지 변경 가능하다.
- 하여 동적 타입 언어의 변수는 값을 확인하기 전에는 타입을 확신할 수 없다.
동적 타입의 변수 사용 시 주의 사항
- 변수는 꼭 필요한 경우에 한해 제한적으로 사용한다. 변수 값은 재할당에 의해 언제든지 변경될 수 있다. 이로 인해 동적 타입 언어인 자바스크립트는 타입을 잘못 예측해 오류가 발생할 가능성이 크다. 변수의 개수가 많으면 많을수록 오류가 발생할 확률도 높아진다. 따라서 변수의 무분별한 남발은 금물이며, 필요한 만큼 최소한으로 유지하도록 주의해야 한다.
- 변수의 유효 범위(스코프)는 최대한 좁게 만들어 변수의 부작용을 억제해야 한다. 변수의 유효 범위가 넓으면 넓을수록 변수로 인해 오류가 발생할 확률이 높아진다. 변수의 유효 범위에 대해서는 "스코프" 단원에서 자세히 확인할 수 있다.
- 전역 변수는 최대한 사용하지 않도록 한다. 어디서든지 참조/변경 가능한 전역 변수는 의도치 않게 값이 변경될 가능성이 높고 다른 코드에 영향을 줄 가능성도 높다. 따라서 전역 변수는 프로그램의 복잡성을 증가시키고 처리 흐름을 추적하기 어렵게 만들고, 오류가 발생할 경우 오류의 원인을 특정하기 어렵게 만든다. 전역 변수의 문제점과 번역 변수의 사용을 억제하는 방법에 대해서는 "전역 변수의 문제점"단원에서 확인할 수 있다.
- 변수보다 상수를 사용해 값의 변경을 억제한다. 상수를 사용하는 방법에 대해서는 "const 키워드" 단원에서 확인할 수 있다.
- 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍 한다. 변수 이름뿐 아니라 모든 식별자(변수, 함수, 클래스이름 등)는 존재 이유를 파악할 수 있는 적절한 이름으로 지어야 한다. 특히 식별자의 유효범위가 넓을수록 명확한 이름을 명명하도록 노력해야 한다. 개발자의 의도를 나타내는 명확한 네이밍은 코드를 이해하기 쉽게 만들고, 이는 협업과 생산성 향상에 도움을 준다. 다시 말하지만 변수 이름은 첫아이 이름 짓듯이 심사숙고 해서 지어야 한다.
'Javascript Deep Dive > 데이터 타입' 카테고리의 다른 글
undefined 타입, null 타입, 심벌 타입, 객체 타입 (1) | 2022.09.07 |
---|---|
템플릿 리터럴(` `), 불리언 타입 (0) | 2022.09.07 |
데이터 타입(정의, 숫자타입, 문자열타입) (0) | 2022.09.07 |
댓글