6장에서는 자바스크립트의 다양한 데이터타입을 소개하고있다. 함께 알아보자!
데이터에는 다음과 같은 타입(종류)가 있다:
항상 헷갈리는 undefined는 var 키워드로 선언된 변수에 암묵적으로 할당되는 값이라고 하는데.. 변수가 정의되지 않았을 때 undefined가 할당되게 된다.
null은 값이 없다는 것을 명시할 때 사용되는 값으로 empty object를 가르키는 타입니다.
각각의 타입에 대해 조금 더 깊이있게 알아보자.
숫자 타입
var integer = 10; //정수
var double = 10.11; // 실수
var negative = -10; // 음의 정수
var binary = 0b0100001; //2진수
var octtal = 0o101; //8진수
var hex = 0x41; //16진수
2진수, 8진수, 16진수..? 수포자인 나는 이를 이해하기 위해 구글링을 했다.
우선 사람은 일상에서 1부터 10까지 모두 있는 10진수를 사용한다.
1, 2, 3, 4, 5, 6, 7, 8, 9, 10 까지 센 후 10에 1을 더해 11, 12, 13... 21, 22, 23, 24 이렇게 진행한다.
하지만 컴퓨터는 인간과 다르게 좀 독특한 방법으로 숫자를 표현한다.
2진법의 경우, 0과 1밖에 표현하지 못하기 때문에 0과 1 두개의 숫자를 세다가 더이상 사용할 숫자가 없을 때 높은 자릿수를 1 증가시킨다.
위와 같이 8진법은 1,2,3,4,5,6,7 까지의 숫자만을 표현하고,
16진법은 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, A, B, C, D, E, F를 표현한다.
20, 21, 22...29, 2A, 2B, 2C, 2D, 2E, 2F, 30인것이다.
숫자타입은 다음과 같은 특별한 값을 표현할 수 있다.
Intinity(양의 무한대), -Infinity(음의 무한대), NaN(산술 연산 불가)
이중 NaN은 숫자값이지만.. 컴퓨터가 표현할 수 없는 숫자값이라고 한다.
문자열 타입
문자열 타입은 텍스트를 표현할 때 사용한다. ' ', " ", 백틱으로 텍스트를 감싼다.
'jiyun'
"jiyun"
`jiyun`
백틱(템플릿 리터럴)의 경우 ES6에 추가되었다.
변수에 문자열인 값을 할당할때 따옴표로 감싸주지 않으면 식별자로 인식한다.
문자열내에서 개행을 하려면..?
자바스크립트에서 공백을 표현하려면 '백슬래시 \'로 시작하는 이스케이프 시퀀스를 사용한다.
심벌타입
심벌 symbol타입은 변경 불가능한 원시 타입의 값, 그리고 다른 값과 중복되지 않는 유일무이한 값이다.
let a = Symbol('abc');
let b = Symbol('abc');
a === b; // false
여기서 a와 b는 같은 값을 가리키고 있다. 하지만 심벌타입이기에 false, 즉 일치하지 않는다.
객체타입
자바스크립트를 이루고 있는 거의 모든 것이 객체(Object)이다. 상단 6가지 타입 외에는 모두 객체 타입이다.
데이터타입이 필요한 이유?
메모리에 값을 저장할려면 먼저 확보해야할 메모리 크기를 결정해야한다. 타입에 따라 메모리의 낭비와 손실 없이 값을 저장할 수 있기때문에 타입이 중요하다.
숫자는 8바이트 단위로 메모리를 잡아서 효율적으로 메모리를 이용한다
( 64비트 0000 0000 0000 0000 ..... 0000 0000 )
메모리에 저장된 값이 0100 0001 이면 숫자로는 65지만 문자열로 해석하면 'A' 그러므로 변수를 선언할때 문자열인지 숫자인지 잘 정해주어야 한다.
동적 타입 언어 / 정적 타입 언어
js는 동적 언어 타입이라 하여 변수가 지정 된 후 타입을 결정한다.
동적 언어는 편리한 타입 지정으로 인해 신뢰성은 하락하지만 정적 언어는 정확한 타입 지정으로 코드의 신뢰성이 상승한다.
따라서 자바스크립트에서 변수를 사용할때는 다음의 주의사항이 있다:
변수의 사용을 최소화 한다
변수를 사용했으면 해당 변수의 사용범위를 최소화 해야한다
전역 변수 사용을 자제한다
변수 보다는 상수(const)를 사용한다
변수 이름을 명확하게 짓는다 (ex - button_name)
여기까지 이다.