본문 바로가기
FrontEnd/JavaScript

Data type

by 해학 2022. 7. 22.
728x90
 
 

JavaScript

동적 타입 언어로
명시하지 않아도 됩니다.

 

What ?

Data type

변수나 값이 가질 수 있는 데이터의 종류입니다.

 


 

기본형(원시) 타입 : 변경 불가능한 값 '할당이나 연산시 데이터가 복제'

값을 복사 할 때 복사된 값을 다른 메모리에 할당 하기 때문에  원래의 값과 복사된 값이 서로에게 영향을 미치지 않는다.

마지막에 할당한 값이 출력

1. Number

-->숫자로 (number) 라고 따로 선언 X

숫자에는 (곱셈 *, 나눗셈 /, 덧셈 +, 뺄셈 -) 사용

 "Infinity" = 어떤 숫자보다 더 큰 특수 값, 무한대(∞)표현.

숫자를 0으로 나누면 무한대를 얻을 수 있습니다.

ex) alert( 1 / 0 ); ---> infinity 추출

cf) NaN = 계산 과정 에러 (ex)음수의 제곱근을 구함, 숫자가 아닌 것을 연산

2. String

--> 문자 ('' 또는 "")를 사용

3. Boolean

--->논리적 참(true), 거짓(false)을 나타내는 값

DATA Type true / false로 변환되는 값

boolean true false
string 비어 있지 않은 모든 문자열 ""(빈 문자열)
number 0이 아닌 모든 숫자(무한대 포함) 0, NaN
object 모든 객체 null
Undefined 해당 없음 undefined

4. null

-->의도적으로 변수에 값이 없다는 것을 명시할때 사용

0 또는 공백과 다르다. 0은 Number이고, 공백은 String이다.

5. undefined

선언 이후 값을 할당하지 않은 변수

6. symbol

(ES6에서 새롭게 추가된 타입) 변경 불가능한 기본형 값

cf)유일한 객체의 프로퍼티 키(property key)생성 시 사용 

 

var str = "Hello";
str = "Hi";

첫번째 줄에서는 Hello 라는 값을 메모리에 생성한 뒤, str 라는 변수를 만들어 해당 메모리 주소를 가리키게 한다.
두번째 줄에서는 Hi 라는 값을 메모리에 새로 생성한 뒤, 변수가 이 새로운 주소를 가리키게 한다.
결과적으로, 메모리 상에는 Hello  Hi  둘다 존재한다. 다만 Hello 는 현재 미아 상태일 뿐.

 

object/reference type(객체타입) 변수가 객체의 주소를 가리키는 값이기 때문에 복사된 값(주소)이 같은 값을 가리킨다.Data type의 역할 : 메모리 공간의 크기와 할당할 수 있는 값을 컴퓨터와 개발자에게 알려주는 역할

 

 

예를 들어, 같은 변수에 숫자를 넣었다가 문자열을 넣을 수도 있어.

js
복사편집
let value = 10; // number value = "hello"; // string (동적 타입이므로 변경 가능)

📌 1. JavaScript의 데이터 타입 종류

자바스크립트의 데이터 타입은 크게 기본(Primitive) 타입객체(Object) 타입으로 나뉘어.

데이터 타입설명예제
기본 타입 (Primitive Type) 변경할 수 없는(Immutable) 값  
number 숫자 (정수, 실수 구분 없음) let num = 42;
string 문자열 let str = "Hello";
boolean 참(true) 또는 거짓(false) let isTrue = false;
undefined 값이 할당되지 않은 변수 let x; // undefined
null 값이 없음을 명시적으로 표현 let y = null;
symbol (ES6) 유일한 값을 만들 때 사용 let sym = Symbol("id");
bigint (ES11) 아주 큰 정수를 다룰 때 사용 let big = 12345678901234567890n;
객체 타입 (Object Type) 여러 값을 담을 수 있는 구조  
Object 키-값 쌍으로 이루어진 데이터 let obj = { name: "Alice", age: 25 };
Array 여러 개의 값을 저장하는 리스트 let arr = [1, 2, 3];
Function 함수도 객체의 한 종류 function sayHi() { console.log("Hi"); }

📌 2. 기본 타입 (Primitive Type) 자세히 알아보기

1️⃣ Number (숫자형)

자바스크립트에서 숫자는 정수와 실수를 구분하지 않고 number 타입으로 다뤄.

js
복사편집
let num1 = 42; // 정수 let num2 = 3.14; // 실수 let num3 = -10; // 음수 console.log(typeof num1); // "number" console.log(typeof num2); // "number"

특수한 숫자 값

값의미
Infinity 무한대 (1 / 0)
-Infinity 음의 무한대 (-1 / 0)
NaN (Not-a-Number) 숫자가 아님 ("hello" * 2)
js
복사편집
console.log(1 / 0); // Infinity console.log("hello" * 2); // NaN

2️⃣ String (문자열)

문자열은 **작은 따옴표(''), 큰 따옴표(""), 백틱(``)**을 사용해 표현할 수 있어.

js
복사편집
let str1 = "Hello"; let str2 = 'World'; let str3 = `안녕하세요`; console.log(typeof str1); // "string"

템플릿 리터럴 (Template Literal)

백틱(`)을 사용하면 문자열 내에 변수를 쉽게 포함할 수 있어.

js
복사편집
let name = "Alice"; console.log(`Hello, ${name}!`); // "Hello, Alice!"

3️⃣ Boolean (불리언)

true 또는 false 값을 가지는 논리 타입이야.

js
복사편집
let isAdult = true; let isStudent = false; console.log(typeof isAdult); // "boolean"

4️⃣ Undefined (정의되지 않음)

변수를 선언했지만 값을 할당하지 않으면 undefined가 됨.

js
복사편집
let x; console.log(x); // undefined

5️⃣ Null (값이 없음)

null은 변수에 **"의도적으로 값이 없음"**을 의미하는 값이야.

js
복사편집
let y = null; console.log(y); // null console.log(typeof y); // "object" (자바스크립트 버그로 인해 이렇게 나옴!)

6️⃣ Symbol (심볼, ES6 추가)

심볼은 고유한 값을 만들 때 사용해.

js
복사편집
let sym1 = Symbol("id"); let sym2 = Symbol("id"); console.log(sym1 === sym2); // false (항상 유일한 값)

7️⃣ BigInt (큰 정수, ES11 추가)

BigInt는 매우 큰 정수를 다룰 때 사용해. 숫자 뒤에 n을 붙이면 BigInt로 인식해.

js
복사편집
let big = 12345678901234567890n; console.log(typeof big); // "bigint"

📌 3. 객체 타입 (Object Type)

자바스크립트에서 객체는 키-값 쌍을 가지는 자료 구조야.
배열, 함수도 객체의 한 종류야!

1️⃣ 일반 객체 (Object)

js
복사편집
let person = { name: "Alice", age: 25 }; console.log(person.name); // "Alice"

2️⃣ 배열 (Array)

배열은 여러 값을 저장할 수 있는 리스트야.

js
복사편집
let numbers = [1, 2, 3, 4, 5]; console.log(numbers[0]); // 1

3️⃣ 함수 (Function)

자바스크립트에서 함수도 객체의 일종이야.

js
복사편집
function sayHello() { console.log("Hello!"); } sayHello(); // "Hello!"

📌 4. 데이터 타입 변환 (Type Conversion)

자바스크립트는 **자동 형 변환(Type Coercion)**을 하기도 하고, 우리가 직접 변환할 수도 있어.

1️⃣ 자동 형 변환

js
복사편집
console.log("5" + 5); // "55" (문자열로 변환) console.log("5" * 2); // 10 (숫자로 변환)

2️⃣ 명시적 형 변환

js
복사편집
let num = "123"; console.log(Number(num)); // 123 console.log(String(123)); // "123" console.log(Boolean(0)); // false

📌 5. typeof 연산자 (데이터 타입 확인)

변수의 데이터 타입을 확인할 때 typeof를 사용해.

js
복사편집
console.log(typeof 42); // "number" console.log(typeof "hello"); // "string" console.log(typeof true); // "boolean" console.log(typeof {}); // "object" console.log(typeof null); // "object" (버그, 원래는 "null"이어야 함) console.log(typeof undefined); // "undefined"

✅ 정리

  1. 기본 타입 (Primitive Type)
    • number, string, boolean, undefined, null, symbol, bigint
  2. 객체 타입 (Object Type)
    • Object, Array, Function
  3. 자동 형 변환과 명시적 형 변환이 존재
  4. typeof 연산자로 데이터 타입 확인 가능

📢 이제 JavaScript의 데이터 타입을 완벽하게 이해했어! 🚀
더 궁금한 게 있으면 질문해 줘! 😊

 
4o
728x90

'FrontEnd > JavaScript' 카테고리의 다른 글

tabIndex  (0) 2022.08.15
숫자 타입  (0) 2022.07.22
선언자  (0) 2022.07.22
선언 , 할당 , 참조  (0) 2022.07.21
JavaScript  (1) 2022.07.19