JavaScript 기본 타입과 메모리 이해하기

2024. 12. 16. 22:05개발/JavaScript

반응형

 

JavaScript의 기본 데이터 타입

1. 숫자 타입 (Number)

숫자 타입은 정수, 음수, 실수를 포함합니다.

let integer = 123; // 정수
let negative = -123; // 음수
let double = 1.23; // 실수

console.log(integer); // 123
console.log(negative); // -123
console.log(double); // 1.23

// 다양한 진법
let binary = 0b1111011; // 2진수
let octal = 0o173; // 8진수
let hex = 0x7b; // 16진수

console.log(binary); // 123
console.log(octal);  // 123
console.log(hex);    // 123

NaN과 Infinity:

console.log(0 / 123); // 0
console.log(123 / 0); // Infinity
console.log(123 / -0); // -Infinity
console.log(123 / 'text'); // NaN (Not a Number)

BigInt

BigInt는 매우 큰 정수를 표현할 때 사용합니다.

let bigInt = 12345678910111213141516171819202122232425262728293031323334353637n;
console.log(bigInt); // 123456789...
console.log(typeof bigInt); // bigint

2. 문자열 타입 (String)

문자열은 텍스트 데이터를 표현하는 타입입니다. 작은 따옴표(')나 큰 따옴표("), 백틱(```)을 사용합니다.

let string = '안녕하세요';
string = `안녕!`;
console.log(string); // 안녕!

// 특수 문자 사용 예시
string = '안녕\\n nicksoon!\\t\\t 내 이름은\\\\';
console.log(string); // 줄바꿈, 탭, 백슬래시 포함

템플릿 리터럴:

let id = 'nicksoon';
let greeting = `안녕, ${id} 🫡\\n즐거운 하루 보내요!`;
console.log(greeting);

3. 불리언 타입 (Boolean)

참(true)과 거짓(false)만을 표현합니다.

let isFree = true;
let isActivated = false;
console.log(isFree); // true
console.log(isActivated); // false

// Truthy와 Falsy 값
console.log(!!0); // false
console.log(!!1); // true
console.log(!!''); // false
console.log(!!' '); // true

4. Null과 Undefined

null은 비어있는 값, undefined는 값이 할당되지 않은 상태를 나타냅니다.

let variable;
console.log(variable); // undefined

variable = null;
console.log(variable); // null

객체 타입 (Object)

객체는 여러 데이터를 묶어서 저장할 수 있는 복합 데이터 타입입니다.

객체 생성과 사용

let apple = {
    name: 'apple',
    color: 'red',
    display: '🍎'
};
let orange = {
    name: 'orange',
    color: 'orange',
    display: '🍊'
};

console.log(apple);
console.log(orange);

값과 참조의 차이

  • *원시 타입(Primitive Type)**은 값 자체를 복사하지만, **객체(Object)**는 참조값(메모리 주소)을 복사합니다.
let a = 1;
let b = a; // 값 복사
console.log(a, b); // 1, 1

let appleObject = { name: 'apple' };
let orangeObject = appleObject; // 참조 복사

appleObject.name = 'orange';
console.log(appleObject); // { name: 'orange' }
console.log(orangeObject); // { name: 'orange' }

객체를 복사하려면 다음과 같이 **얕은 복사(Shallow Copy)**를 사용합니다:

let finappleObject = Object.assign({}, appleObject);
let mango = { ...appleObject };

finappleObject.name = '파인애플';
mango.name = 'mango';

console.log(finappleObject); // { name: '파인애플' }
console.log(mango); // { name: 'mango' }

const와 let

변수를 선언할 때 const와 let의 차이를 알아봅시다.

재할당 가능 여부 변경 가능 여부

  재할당 reassignable 변경 Mutable
let Yes Yes
const No Yes
let exA = 1;
exA = 2; // 가능

const exText = 'hello';
// exText = 'hi'; // 불가능

const exConstApple = {
    name: 'apple',
    color: 'red'
};
exConstApple.color = 'green'; // 객체의 속성 변경은 가능
console.log(exConstApple);

typeof를 통한 타입 확인

JavaScript는 동적 타입 언어이므로 변수의 타입이 실행 중에 변경될 수 있습니다.

let typeofVariable;
console.log(typeof typeofVariable); // undefined

typeofVariable = 'Hello';
console.log(typeof typeofVariable); // string

typeofVariable = 123;
console.log(typeof typeofVariable); // number

typeofVariable = function () {};
console.log(typeof typeofVariable); // function

typeofVariable = {};
console.log(typeof typeofVariable); // object

마무리하며

이 글에서는 JavaScript의 기본 데이터 타입객체 타입, 그리고 변수의 활용법에 대해 다루었습니다. 

반응형