본문 바로가기
Java Script/JS basic

JS] 데이터 타입 |

by CodeMia 2021. 7. 30.

 

 

 

 

명령어와 데이터타입 

컴퓨터는 어떻게 명령어와 사용자에게 보여줄 말을 구분할까? 

 

앞에 쓰인 말은 컴퓨터가 명령어로 생각하고 

괄호안에 든 말은 데이터 타입으로 인식하여

사용자에게 보여줘야할 말로 생각한다. 

 

 

 

 

프로그래밍 언어는 

입력, 연산, 출력이 가장 기본 형태로 되어 있다. 

사용자에게 내용을 입력 받아 연산을 한 후

다시 사용자에게 내용을 보여주는 과정이 기본 형태이다. 

그래서 

1. CPU에 최적화된 연산(로직)을 작성하고, 

2. 메모리를 최소화하여 사용하는 것이 중요하다. 

그렇기에 어떤 데이터 타입을 결정해서 쓰는 지도 중요하다. 

 

 

데이터 타입 ( Variable Types )

데이터 타입은 primitive data type

object data type (reference values) 2가지로 나눌 수 있다.

 

Primitive Data Type  

primitive data type은 더 이상 작은 단위로 나눌 수 없는 한 가지 아이템

 

1 numbers 

1 2 3 

따옴표로 감쌀 필요없이 그냥 숫자만 써주면 된다.

JS
pop up

 

 

 

 

2 String  

string이란  여러개의 사물을 엮어 놓은 줄을 말한다.

 

컴퓨터의 세계에서는 텍스트를 말한다. 

큰따옴표나 작은따옴표로 감싸준다. 

 

 

다른 언어에서는 한 글자인 경우 데이터 타입이 따로 있지만 

자바스크립트에서는 모두 string으로 담는다 

const char = 'c'; 

 

+ 부호를 사용해서 string과 변수를 이어 붙일 수 있다

const name = 'Jason' 

const greeting = 'hello' + name; 

// hello Jason 

 

template literals 을 이용해서 아래처럼 나타낼 수 있다. 

const greeting = `hello ${name}`

 

 

 

 

 

3. Boolean 

true, false로 나눔

false: 0, null, undefined, NaN, ' '(비어있는 스트링)

true: any other value

 

 

직접 할당 가능하고 

const online = true

 

간접 할당도 가능하다.

const test = 0 < 1; (false) 

 

 

 

4 null  

let nothing = null; 

비어있도록 값이 할당되는 경우

 

 

5 undefined 

선언은 되었지만 아직 값이 정해지지 않은 상태 

let x;  

let x = undefined;로 직접 지정도 가능하다. 

나중에 값 입력가능 

 

 

6  symbol 

식별자(id)가 필요할 때 쓰여진다. 

id를 symbol로 쓰지 않고 string으로 쓰는 경우 다른 곳에서 같은 string이 나온 경우 식별자로 인식을 해버린다. 

하지만 symbol로 지정해 놓으면 같은 내용으로 만들더라도 다른 id로 생각한다. 

 

 

 

 

7 bigint 

새로 생긴 데이터 타입 

자바스크립트의 숫자는 -2**53 ~ 2*53 범주의 숫자가 표현 가능한 데 그 이상을 쓸 때 사용한다. 

숫자 마지막에 n을 붙이면 bigint가 된다. 

const bigint = 1234567890123456789012345678901234567890

 

 

 

 Reference Values 

primitive data type이 아닌 모든 data type

object, array, function 등이 있다. 

 

Object 

이 primitive 아이템들을 묶어서 한 박스로 관리하는 것

 

 

function 

자바스크립트에서는 함수도 데이터 타입이다. 

first-class function 이라고도 하는데

데이터 타입처럼 변수에 할당이 가능하고,

함수의 파라미터로도 사용될 수 있고, 

함수의 리턴 타입으로 함수가 리턴 될 수도 있는 함수를 말한다. 

 

 

로우 레벨 언어인 C 언어는

개발자가 세세하게 메모리를 관리할 수 있다. 

코드 짤 때 미리 이 정도 메모리를 쓰겠다 할당한다. 

그래서 숫자 관련 변수만 보더라도

short, int, long, float, double 등 다양하게 존재한다. 

 

하지만 자바스크립트에서는 number 하나면 끝. 

얼마만큼의 사이즈를 할당할 지 고민하지 않아도 된다. 

심지어 number로 선언하지 않고 

let a = 12;  

let b = 1.2;  

이렇게 숫자를 바로 할당해 주면 된다. 

 

타입스크립트에서도 short, int 등을 쓰는 것이 아니라 

number 만 써주면 된다. 

let a: number = 12;

let b: number = 1.2; 

 

 

미리 정해진 특별한 값 

const infinity = 1 / 0; 

const negativeInfinity = -1 / 0 

숫자를 0으로 나누면 무한대로 숫자가 생김

 

const nAn = a / 2; 

숫자가 아닌 string을 숫자로 나누면

NaN (Not A Number)가 나온다. 

 

나누고자 하는 값이 0인지 아닌지, 

숫자인지 아닌지 꼭 확인해야 한다. 

 

 

 

Dynamic Typing

c 언어, java는 static type 형태이다.

변수 선언시 어떤 데이터 타입 할 지 정하는 것이다. 

dynamic type은 선언시 어떤 타입인지 선언하지 않고, 

프로그램이 런타임 일 때 

할당된 값에 따라 타입이 변경될 수 있다. 

 

 

text를 hello 로 넣으면 text의 타입은 string으로 나온다. 

 

1을 할당하면 타입은 number로 자동으로 바뀐다.

 

string과 숫자를 더하니 이번에는 string으로 인식해서 75가 되었다. 

 

이 번에는 string을 나눴는데 숫자로 인식하고 나누었다. 

 

이렇게 자바스크립트가 알아서 데이터 타입을 정하면 

초기에는 좋을지 모르나 

규모가 커지면 에러가 많이 발생한다. 

그래서 typescript를 쓰게 된다. 

 

 

 

댓글