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

앞에 쓰인 말은 컴퓨터가 명령어로 생각하고
괄호안에 든 말은 데이터 타입으로 인식하여
사용자에게 보여줘야할 말로 생각한다.
프로그래밍 언어는
입력, 연산, 출력이 가장 기본 형태로 되어 있다.
사용자에게 내용을 입력 받아 연산을 한 후
다시 사용자에게 내용을 보여주는 과정이 기본 형태이다.
그래서
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
따옴표로 감쌀 필요없이 그냥 숫자만 써주면 된다.


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 = 1234567890123456789012345678901234567890n
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를 쓰게 된다.
'Java Script > JS basic' 카테고리의 다른 글
JS] 자바스크립트 variables 변수란? 변수 만드는 법 (0) | 2021.07.31 |
---|---|
JS]자바스크립트 Alert / Prompt (0) | 2021.07.31 |
JS] 자바스크립트 기본 문법 (0) | 2021.07.27 |
JS] 크롬에서 자바스크립트 콘솔열어 behavior 만들기 (0) | 2021.07.27 |
JS] 자바스크립트란? 자바스크립트 간단한 역사 (0) | 2021.07.26 |
댓글