[모던 자바스크립트 Deep Dive] 6장 데이터 타입
자바스크립트(ES6)는 7개의 데이터 타입을 제공한다.
7개의 데이터 타입은 원시 타입primitive type 객체 타입object/reference type으로 분류할 수 있다.
구분 | 데이터 타입 | 설명 |
원시 타입 | 숫자number 타입 | 숫자. 정수와 실수 구분 없이 하나의 숫자 타입만 존재 |
문자열string 타입 | 문자열 | |
불리언boolean타입 | 논리적 참(true)과 거짓(false) | |
undefined 타입 | var 키워드로 선언된 변수에 암묵적으로 할당되는 값 | |
null 타입 | 값이 없다는 것을 의도적으로 명시할 때 사용하는 값 | |
심벌symbol 타입 | ES6에서 추가된 7번째 타입 | |
객체 타입 | 객체, 함수, 배열등 |
*ECMAScript2020(ES11)에서 새로운 원시값 BigInt가 추가되었다.
6.1 숫자 타입
ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따른다. (모든 수를 실수로 처리)
//숫자 타입은 모두 실수로 처리된다.
console.log(1 === 1.0); //true
6.2 문자열 타입
문자열 타입은 텍스트 데이터를 나타내는 데 사용한다.
//문자열 타입
var string;
string = '문자열'; //작은따옴표 *일반적으로 사용
string = "문자열"; //큰따옴표
string = `문자열`; //백틱(ES6)
6.3 템플릿 리터럴
템플릿 리터럴template literal은 멀티라인 문자열multi-line string, 표현식 삽입expression interpolation, 태그드 템플릿tagged template등 편리한 문자열 처리 기능을 제공한다.
템플릿 리터럴은 백틱(``)을 사용해서 표현한다.
표현식 삽입
피 연산자 중 하나 이상이 문자열인 경우 + 연산자를 문자열 연결 연산자로 사용한다.
표현식 삽입하려면 ${ }으로 표현식을 감싼다.
console.log(`1 + 2 = ${1 + 2}`); // 1 + 2 = 3
표현식 삽입은 반드시 템플릿 리터럴 내에서 사용해야 한다.
console.log('1 + 2 = ${1 + 2}'); // 1 + 2 = ${1 + 2}
6.4 불리언 타입
논리적 참, 거짓을 나타내는 true 와 false를 값으로 한다.
6.5 undefined 타입
undefined 타입의 값은 undefined가 유일하다.
undefined는 개발자가 의도적으로 할당하기 위한 값이 아니라 자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값.
*변수에 값이 없다는 것을 명시하고 싶을 때는 null을 할당
6.6 null 타입
null 타입의 값은 null이 유일하다.
자바스크립트에서 null은 Null, NULL 등과 다르다.
변수에 null을 할당하는 것은 변수가 이전에 참도하던 값을 더 이상 참조하지 않겠다는 의미
*document.querySelector 메서드는 조건에 부합하는 HTML 요소를 검색할 수 없는 경우 null을 반환
6.7 심벌 타입
심벌은 ES6에서 추가된 7번째 타입으로, 변경 불가능한 원시 타입의 값이다. - 33장 "7번째 타입 Symbol" 에서 자세히
6.8 객체 타입
6개의 데이터 타입 이외의 모든 값은 모두 객체 타입이다.
6.10 동적타이핑
typeof 연산자로 변수를 연산하면 변수(에 할당된)의 데이터 타입을 반환한다.
var foo;
console.log(typeof foo); // undefined
foo = 3;
console.log(typeof foo); // number
foo = 'Hello';
console.log(typeof foo); // string
foo = null;
console.log(typeof foo); // object
foo = Symbol();
console.log(typeof foo); //symbol
자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론type inference)된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑dynamic typing 이라 한다.
*자바스크립트는 동적 타입 언어
변수를 사용할 때 주의할 점
- 변수는 꼭 필요한 경우에 한해 제한적으로 사용한다.
- 변수의 유효 범위(스코프)는 최대한 좁게 만들어 변수의 부작용을 억제해야 한다.
- 전역 변수는 최대한 사용하지 않도록 한다.
- 변수보다는 상수를 사용해 값의 변경을 억제한다.
- 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍한다.
컴퓨터가 이해하는 코드는 어떤 바보드 쓸 수 있다. 하지만 훌륭한 프로그래머는 사람이 이해할 수 있는 코드를 쓴다
- 마틴 파울러 <리팩토링>의 저자-
크으~ b
출처 : 이웅모. 「모던 자바스크립트 Deep Dive」. 위키북스. 2023