데이터 타입이란?
값의 종류를 말하며, 자바스크립트의 모든 값은 타입을 갖는다. 크게 7개의 데이터 타입을 제공하며, 원시 타입(primitive type)과 객체 타입(object type)으로 나눌 수 있다.
데이터 타입의 종류에 따라 값을 생성한 목적과 용도가 다르며, 확보해야 할 메모리 공간의 크기와 값을 해석하는 방식 등이 다르다.
// 정수 역시 실수로 처리됨
console.log(1 === 1.0) // true
숫자 타입에는 세 가지의 특별한 값 존재
console.log(1 * 'String') // NaN
C에서는 문자열을 문자의 배열로 표현하고, 자바는 문자열을 객체로 표현
멀티라인 문자열
var str = `Hello
world.`;
// Hello
// world.
표현식 삽입
var first = 'Ung-mo';
var last = 'Lee';
console.log(`My name is ${first} ${last}`);
// My name ìs Ung-mo Lee
// 표현식 평가 결과가 문자열이 아니여도 문자열로 강제 변환되어 삽입
console.log(`1 + 2 = ${1 + 2}`); // 1 + 2 = 3
변수 선언에 의해 확보된 메모리 공간을 빈 상태(garbage value가 들어가지 않고)로 두지 않고 undefined로 초기화하는 것
var foo;
console.log(foo); // undefined
변수에 null 값을 할당하는 것은 값에 대한 참조를 명시적으로 제거하는 것을 의미함
var foo = 'Lee';
foo = null
1. 메모리 공간 확보와 참조
2. 값의 해석
얼마의 메모리 공간을 사용해야 낭비와 손실 없이 값을 저장할 수 있는지 알아야 함
var score = 100;
위의 코드가 실행되면 이 값을 저장하기 위한 메모리 공간을 확보해야 한다. 이때 JS 엔진은 데이터의 타입, 여기서는 값의 종류에 따라 정해져 있는 크기와 메모리 공간을 확보하게 된다.
값을 참조하려면 식별자 score를 통해 그 값(100)이 저장되어 있는 메모리 공간의 주소를 찾아가야 한다. 메모리에 있는 값을 참조하기 위해서는 그 메모리의 시작 셀(또는 블럭)의 주소와 값이 차지하고 있는 메모리 공간의 크기를 알아야 한다. 이는 값이 저장될 때 타입에 따라 결정되므로 값의 타입을 알아야 값을 참조할 수 있다.
메모리에 저장된 2진수 비트의 값을 해석하기 위해서도 타입을 알아야 한다. 0100 0001은 숫자로는 65이지만 문자로는 A이다.
정적 타입 언어 : 정적 타입의 언어(C/JAVA)는 변수를 선언할 때 데이터의 타입을 사전에 선언한다(명시적 타입 선언; explicit type declaration)
동적 타입 언어 : 선언이 아닌 할당에 의해 타입이 결정(타입 추론; type inference)
- 변수는 꼭 필요한 경우에만 사용할 것
- 변수의 유효 범위를 좁게 만들어 부작용을 억제할 것
- 전역 변수는 최대한 사용하지 않을 것
- 변수보다는 상수를 사용
- 변수 이름을 목적과 의미를 파악할 수 있게 네이밍할 것