Javascript - 원시 자료형 / 참조 자료형

ㅂㅈㄷㅂ123·2022년 7월 11일
0
post-thumbnail

원시 자료형

원시 자료형이란?

  • number, string, boolean, undefined, null, symbol 등이 있다.
  • 원시 타입이라고도 불린다.
  • 원시 타입의 값은 변경 불가능한 값이다. (immutable value)
  • 따라서 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다.
let a=5;
let b=a;
console.log(b) = 5 이지만

b=4로 재할당 했을 때,
console.log(b) = 4
console.log(a) = 5

참조 자료형

참조 자료형이란?

  • 객체, 함수, 배열 등이 있다.
  • 참조 타입, 객체 타입이라고도 불린다.
  • 참조 타입의 값은 변경 가능한 값이다. (mutable value)
  • 따라서 객체를 할당한 변수에는 생성된 객체가 실제로 저장된 메모리 공간의 주소가 저장되어 있어서 유동적으로 값을 변경시킬 수 있다.
let x = { foo: 3 };
let y = x;
y.foo = 2;

//x.foo는? 2이다.

헷갈리는 문제들

console.log('ABC' === 'ABC');
console.log(3.14 === 3.14);
console.log([1,2,3] === [1,2,3]);
console.log({ foo: 'bar' } === { foo: 'bar' });

//true, true, false, false
  • 위의 값을 출력해보면 당연히 true, true, true, true 일 거라 생각하겠지만
    true, true, false, false가 나온다.
  • 왜 그럴까? 3번 째 줄의 앞의 [1, 2, 3]의 주소와 뒤의 [1, 2, 3]의 주소가 다르기 때문이다.
  • 참조 자료형은 선언 되는 순간 주소 값과 메모리 값을 가지고 있다고 생각하면 편하다.
let x = { foo: 3 };
let y = x;
y = 2;

//x.foo는? 3이다.
let myArray = [2, 3, 4, 5];
let ourArray = myArray;
ourArray[2] = 25;
ourArray = undefined;

myArray의 값은? [2, 3, 25, 5]이다.
let score = 80;
function doStuff(value) {
  value = 90;
}

doStuff(score)

//score의 값은? 80이다.
profile
ㅂㅈㄷㅂㅈㄷ

0개의 댓글

관련 채용 정보