데이터 타입

김민수·2023년 10월 4일
0
post-thumbnail

JavaScript는 객체 기반의 언어이다.

JavaScript를 이루고 있는 거의 모든 것이 객체이다.

이를 생각하고 들어가자..!

데이터 타입 : 값의 종류

구분테이터 타입
원시숫자
원시문자열
원시불리언
원시undefined
원시null
원시심벌
원시Bigint
객체객체, 함수, 배열 등..

데이터 타입 마다 확보해야 할 메모리 공간의 크기도 다르고 메모리에 저장되는 2진수도 다르며 읽어 들여 해석하는 방식도 다르다..

데이터 타입을 하나씩 살펴보자..


1. 숫자 타입

JavaScript는 모든 수를 실수로 처리한다.

console.log(1 === 1.0) // true

JavaScript에는 특별한 값도 있다..!

let str;
str = Infinity //양의 무한대
str = -Infinity //음의 무한대
str = NaN //산술 연산 불가(not-a-number)

2. 문자열 타입

문자열 타입은 텍스트 데이터를 나타내며, let var 등과 같은 토큰과 구분하기 위해 사용한다.

// 종류
let str;
str = 'a' //작은 따옴표; - 가장 일반적인 표기법
str = "b" //큰 따옴표
str = `c` //백틱(ES6)

3. 템플릿 리터럴

ES6부터 탬플릿 리터럴 이라고 하는 새로운 문자열 표기법이 도입되었다!

멀티라인 문자열

console.log(`a  c 
b`); // 이런식으로 공백, 개행(\n) 가능!

표현식 삽입

console.log(`이 값은 ${1 + 2} 입니다.`) // 이 값은 3 입니다. // 굿...

출력문제 (이거 풀 때 쓰면 개꿀..)


4. 불리언 타입

참(true), 거짓(false)

흐름제어할 때 많이 쓰인다.


5. undefined 타입

undefined.. => 정의되지 않은... 이라는 뜻이다..

let a = 1;
a = undefined;

혹시 이런식으로 의도적으로 할당한 적이 있는가..? (예전에...)
우리는 이 뜻을 잘 생각하며 사용해줄 필요성이 있다.

undefined 는 자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값이다..

앞으로 우리는 null을 이용하도록 하자


6. null 타입

null 타입은 null만 있다..!

undefined에서 말했듯이 의도적으로 명시할 때 사용!

함수가 값을 반환할 수 없을 때 반환하기도 함!


7. 심벌 타입

심벌은 변경 불가능한 원시 타입의 값이다.

다른 값과 중복되지 않는 유일무이한 값!

객체의 유일한 프로퍼티 키를 만들기 위해 사용한다!

// 심벌 값 생성
var key = Symbol('key');
console.log(typeof key) // symbol

// 객체 생성
var obj = {};

// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용한다.
obj[key] = 'value';
console.log(obj[key]) // value

8. 데이터 타입의 필요성

위와 같이 원시 타입들을 훑어보았고, 객체는 추후에 적는다고 치자..
그럼 이제 왜 써야 되는지에 대해서 먼저 적자면...

값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해

값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해

메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해

위와 같이 메모리 공간에 대해 낭비와 손실 없이 값을 저장할 수 있는지 알아야 한다는 것이다.
이로써 데이터를 효율적으로 다루고 안정성을 유지하는게 아닐까..


9. 동적 타이핑

정적 타입 언어 : 사전에 데이터 타입 선언하는 것!

컴파일 시점에 타입 체크를 수행한다.

안정적인 구현이 가능하다.

동적 타입 언어 : 정적 타입 언어와 구별하기 위해 작명 됨..

자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정 된다.

재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.

동적 타입 언어의 변수 사용시 주의할 사항

변수의 갯수가 많을 수록 오류가 발생할 확률이 높아지니 제한적으로 사용하자.

변수의 유효 범위를 좁게 만들어 부작용을 억제하자

전역 변수를 최대한 지양하자

네이밍을 목적과 의미를 파악할 수 있도록 확실하게 하자

뭔가 언어의 유연성이 높아지는 만큼 책임감이 높아지는 기분이다..

0개의 댓글