06장 데이터 타입
숫자 타입
1. 자바스크립트는 모든 수를 실수로 처리함.
그래서 정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있음.
📂 ex 1
var integer = 10; // 정수
var double = 10.123; // 실수
var negative = -10; // 음의 정수
2. 정수, 실수, 2진수, 8진수, 16진수 리터럴 모두 메모리에 배정밀도 64비트 부동소수점 형식의 2진수로 저장되나 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입이 제공되지 않기 때문에 해당 값을 참조할 경우 모두 10진수로 해석함.
📂 ex 2
var integer = 65; // 10진수
var binary = 0b01000001; // 2진수
var octal = 0o101; // 8진수
var hex = 0x41; // 16진수
console.log(integer); // 65
console.log(binary); // 65
console.log(octal); // 65
console.log(hex); // 65
console.log(integer === binary); // true
console.log(octal === hex); // true
3. 자바스크립트의 숫자타입은 모든 수가 실수로 처리됨으로, 정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있음.
📂 ex 3
console.log(100 === 100.00); // true
console.log(4 / 2); // 2
console.log(3 / 2); // 1.5
4. 추가적으로 표현 가능한 값
- Infinity: 양의 무한대
- -Infinity: 음의 무한대
- Nan : 산술 연산 불가(not-a-number)
📂 ex 4
console.log(10 / 0); // Infinity
console.log(10 / -0); // -Infinity
console.log(1 - 'zero'); // NaN
// NaN이 아닌 NAN, Nan, nan 등은 식별자로 해석되며, NaN의 의미로 사용할 경우 에러가 발생함
var a = nan; // ReferenceError: nan is not defined
문자열 타입
텍스트 데이터를 나타낼 때 사용.
// 문자열 타입
var string;
string = '작은 따옴표 사용';
string = "큰 따옴표 사용';
string = `백틱 문자 사용(ES6)`;
string = '작은 따옴표 안의 "큰 따옴표"는 문자열로 인식';
string = "큰 따옴표 안의 '작은 따옴표'는 문자열로 인식";
템플릿 리터럴
ES6부터 도입. 런타임에 일반 문자열로 변환되어 처리. 백틱(``)을 사용해 표현한다.
// 1. 멀티라인 문자열
// 줄바꿈 허용, 모든 공백 적용
var template1 = `
<ul>
<li>
<p>템플릿</p>
<p>리터럴</p>
</li>
</ul>
`;
// 2. 표현식 삽입
var first = 'John';
var last = 'Doe';
console.log(`My name is ${first} ${last}`); // My name is John Doe
불리언 타입
논리적 참, 거짓을 나타내는 true, false 값만 존재
undefined 타입
undefined가 유일한 값.
자바스크립트 엔진이 변수를 초기화할때 사용하는 값으로, 변수를 선언한 이후 값을 할당하지 않은 경우 undefined가 반환됨.
null 타입
null이 유일한 값. 변수에 값이 없다는 것을 의도적으로 명시할때 사용.
또는 함수가 유효한 값을 반환할 수 없는 경우 명시적으로 반환하기도 함.
심벌 타입
ES6에서 추가된 변경 불가능한 원시 타입의 값.
다른 값과 중복되지 않는 유일무이한 값.
주로 이름이 충돌할 위험이 없는 객체의 유일무이한 프로퍼티 키를 만들기 위해 사용함.
Symbol 함수를 호출해 생성되며 이때 생성된 값은 외부에 노출되지 않고, 다른값과 절대 중복되지 않음.
// 심벌 값 생성
var key = Symbol('key');
console.log(typeof key); // symbol
// 객체 생성
var obj = {};
// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용한다
obj[key] = 'value';
console.log(obj[key]); // value
객체 타입
숫자, 문자열, 불리언, undefined, null, 심벌 이외의 값은 모두 객체 타입이다.
데이터 타입의 필요성
- 값을 저장할때 확보해야하는 메모리 공간의 크기를 결정하기 위해
- 값을 참조할때 한번에 읽어들여야 할 메모리 공간의 크기를 결정하기 위해
- 메모리에서 읽어들인 2진수를 어떻게 해석할지 결정하기 위해
동적 타이핑
자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정됨. 또한 재할당에 의해 변수의 타입이 언제든지 동적으로 변할 수 있음 => 동적 타이핑
'study > JavaScript' 카테고리의 다른 글
[JavaScript] 얕은 복사와 깊은 복사 (0) | 2023.01.15 |
---|---|
[자바스크립트 딥다이브] 07. 연산자 (0) | 2022.12.10 |
[자바스크립트 딥다이브] 05. 표현식과 문 (0) | 2022.12.10 |
[자바스크립트 딥다이브] 04. 변수 (0) | 2022.12.10 |
Vanilla JS로 댓글 기능이 있는 게시판 만들기_3일차 (0) | 2022.12.08 |