ㅎㅇ JS 데이터 타입에 대해 알아보자.

크게 두 가지로 나뉨:

  1. 원시타입 (Primitive type)
  2. 참조타입 (Reference type)

원시타입
그냥 값 자체를 저장하는 애들임.
얘네가 있음:

  • string (문자)
  • number (숫자)
  • boolean (true/false)
  • undefined (값이 없음)
  • symbol (ES6에서 추가됨)
  • bigint (엄청 큰 숫자)

특징이 뭐냐면:

  • 불변임 (한번 만들어지면 그 값이 절대 안 바뀜)
  • 복사하면 값 자체를 복사함

예시로 보면 이렇게 됨:

let a = 100;
let b = a;
a = 50;

console.log(b) // 100이 나옴

 

왜 100이 나올까?

b가 a를 복사할 때 값 자체를 복사했기 때문임.

 

100이 들어가 있던 변수가 50으로 바뀌는 게 아니라
그냥 50을 새로 메모리에 할당해버림.

 

b도 같은 100이 아니라 새로운 메모리에 100을 할당함.

 

같은 값이고 심지어 (=) 대입까지 했지만

같은 값을 가진 다른 주소를 가리키고 있다는 게 중요함.

 

참조타입은 뭐임.


원시타입 빼고 전부 다 참조타입임.
대표적으로:

  • 배열 []
  • 객체 {}
  • 함수

특징:

  • 값의 크기가 막 바뀔 수 있음
  • 복사하면 주소만 복사됨 (실제 값이 아님)

보면 이렇게 됨:

예시:

let myArr = [];
let copyArr = myArr;

myArr.push("hello");

console.log(copyArr); // ["hello"]가 나옴

 

왜 copyArr에도 "hello"가 들어갔을까?
참조타입은 주소만 복사하기 때문임.


말 그대로 주소만 복사한 거임.

그렇기 때문에 주소가 100개고 1000개고 모두 다 같은 집을 가리키고 있는 거임.

집 주소니깐.

 

원시타입과는 다르게 값이 계속 할당되는 게 아님.

주소만 생길 뿐 결국 가리키는 곳은 주소에 있는 값임.

(코드형 견망지월ㄷㄷ)

 

참조타입 다룰 때 원본이 바뀔 수 있다는 걸 항상 기억해야 됨.

 

'JS' 카테고리의 다른 글

1-1 JavaScript 변수  (1) 2024.11.21
DOM(Document Object Model) 쉽게 알기 JS  (1) 2024.11.19

JavaScript 변수

변수가 뭘까.
그냥 데이터를 담는 상자임.

let 돈 = 5000;

 

이러면 '돈'이라는 상자에 5000원을 넣은 거임.

변수 선언하는 방법들

JS에서는 세 가지 방법으로 변수를 선언할 수 있음:

  1. var (옛날 방식)
  2. let (요즘 방식)
  3. const (안 변하는 값)

1. var (이제 안 씀)

var 돈 = 5000;
돈 = 10000; // 값 변경 가능
var 돈 = 20000; // 같은 이름으로 또 선언 가능 (이게 문제임)

 

var는 문제가 많아서 이제 잘 안 씀.
과거의 js 코드에서 볼 수 있는 고대 유물 비슷한 거임.

  • 같은 이름으로 여러 번 선언 가능해서 실수하기 쉬움
  • 코드를 꽈배기처럼 꼬아서 만들고 싶으면 이거 쓰면 됨.

2. let (요즘 쓰는 애)

let 돈 = 5000;
돈 = 10000; // 값 변경 가능
let 돈 = 20000; // 에러! 같은 이름으로 또 선언 불가능

let의 특징:

  • 값 변경 가능
  • 근데 같은 이름으로 두 번 선언은 안됨
  • 대부분의 경우 이거 씀

3. const (고정값)

const 세금 = 500;
세금 = 1000; // 에러! const는 값 변경 불가능

const 특징:

  • 한번 값 넣으면 끝. 영원히 그 값임
  • 진짜 절대 안 바꿀 값에만 사용

정리

  • const = 상수값
  • let = 변수값
  • var = 넌 나가라

실제로 어떻게 쓰나?

실무에서는 이런 식으로 씀:

// 1. 기본적으로 const 사용
const 최대인원 = 100;
const API주소 = "https://api.example.com";
const 세금율 = 0.1;

// 2. 값이 바뀌어야 하는 경우에만 let 사용
let 현재인원 = 0;
let 총금액 = 1000;

// 3. var는 절대 안씀 (레거시 코드 아니면)

 

TMI: 레거시 코드가 뭔데?

 

Legacy = 유산

이름부터 느껴지는 찐한 과거의 향기로 추측할 수 있겠지만

옛날에 만든 구시대적 코드임.

 

그럼 이제는 안 쓰겠네요?

 

아님 열심히 씀 

코드가 돌아가긴 돌아가니깐

 

말 그대로 유산처럼 대대로 내려오는 거임.

코드를 신식으로 바꾸자니 와르르 무너질까 봐

그냥 구시대 방식으로 계속 유지보수를 하는 거임.

 

TMI: 변수 이름 짓기

변수 이름 잘 짓는 게 생각보다 중요함:

// 나쁜 예시
let 백종원 = 100;
let 트럼프 = "홍길동";
let wowowow = true;

// 좋은 예시
let 최대수용인원 = 100;
let 사용자이름 = "홍길동";
let 로그인여부 = true;

 

왜 이렇게 하냐면:

  1. 코드 읽기 쉬워짐
  2. 나중에 뭐가 뭔지 까먹어도 바로 알 수 있음
  3. 다른 사람이 봐도 이해하기 쉬움

정리

  1. var는 이제 안 씀 (레거시 코드에서나 볼 수 있음)
  2. 상수값은 const 쓰고
  3. 값을 바꿔야 하는 경우 let 사용
  4. 변수 이름은 최대한 자세히 쓰기

이게 다임.

다음 시간에는 데이터 타입에 대해 알아볼 예정.

'JS' 카테고리의 다른 글

1-2 메모리구조  (0) 2024.11.26
DOM(Document Object Model) 쉽게 알기 JS  (1) 2024.11.19

+ Recent posts