[JavaScript] Variable types

aseol·2023년 8월 21일
0

JavaScript

목록 보기
2/15

Java Script는 Dynamically typed language.
자바스크립트는 동적 타입 언어이다. 이는 정적 타입 언어(C, Java 등)처럼 컴파일 할 때 변수의 타입을 체크하는 것이 아니라 코드가 실행될 때 변수나 함수의 타입을 동적으로 결정하며, 런타임시 타입 에러를 발생시킨다.

자기 나름대로 타입을 바꿔 주는 게 진짜 신기하다...
하지만 이러한 유연함 때문에 문제가 생길 수가 있다고 한다! 

✔️ Primitive Data

single item
더 이상 작은 단위로 나눠질 수 없는 한 가지 아이템
가장 기본적인 데이터 타입으로, 값이 메모리에 직접 저장된다.

1. number

자바스크립트는 number 하나로 정수와 실수를 포함한 모든 숫자 데이터들을 담을 수 있다.

special numeric values

infinity

양수를 0으로 나눌 경우

-infinity

음수를 0으로 나눌 경우

NaN

Not A Number
잘못된 입력으로 인해 계산을 할 수 없을 경우

bigInt

-2^53 ~ 2^53 의 범위를 초과하는 수
숫자 뒤에 n을 붙이면 bigInt로 간주된다.

➕ 백틱과 $ {}을 이용한 위와 같은 작성 방식을 
template literals [template string] 라고 한다.

2. boolean

참과 거짓을 나타낸다

❔ true / false 로 간주되는 값들

0, null, undefined, NaN, ''(비어 있는 스트링 값) ➡️ false
1, 이외의 다른 값들 ➡️ true

3. string

한 글자든 여러 글자든 모두 string

4. null

'없다'를 의미하는 데이터.
의도적으로 데이터가 없음을 나타내기 위한 일종의 표현 수단이다.

5. undefined

데이터가 아직 정의되지 않았음을 나타낸다.
null과 다름 주의!

6. Symbol

고유한 식별자가 필요할 때 사용

동일한 string을 작성하여도 다른 심볼로 만들어 준다.

❔ string이 동일하다면 동일한 심볼로 만들고 싶을 때 🔽

 Symbol.for를 사용하면 된다.
 
const gsymbol1 = Symbol.for('id');
const gsymbol2 = Symbol.for('id');

Symbol 값 출력시 🔽

console.log(`값: ${Symbol}`); 
  ➡️ 에러 발생 

console.log(`값: ${Symbol.description}`);
  ➡️ .description을 이용하여 string으로 변환해서 출력하기 

✔️ Reference Data

값이 직접 메모리에 저장되지 않고, 값이 저장된 메모리 주소를 참조.
primitive type을 제외한 나머지 값들(배열, 함수, 정규표현식 등)은 모두 객체이다. 또한 객체는 pass-by-reference(참조에 의한 전달) 방식으로 전달된다.

Array

object

box container
single item들을 여러 개 묶어서 한 단위로, 한 박스로 관리할 수 있게 해 준다.

const profile = { name: 'sally', age: 20 };

profile = { name: 'minsu', age: 25 };
	➡️ const로 선언되었기 때문에 다른 object로 할당할 수 없다 (에러 발생)
    
그럼 어떻게 object 의 값을 바꿀 수 있을까? 🔽 
profile.name = 'minsu';
	➡️ object 내의 변수에 각각 접근하여 값을 바꾸는 것은 가능하다.

function

first-class function
함수도 다른 데이터타입처럼 변수에 할당이 가능하고, 때문에 파라미터로 전달될 수도 있으며 리턴될 수도 있다

0개의 댓글