Primitive & Reference

katsukichi·2021년 1월 26일
0

CodeStates_PRE

목록 보기
13/27

intro

primitive type : 원시 타입

  • number, string, boolean 과 같은 고정된 저장공간을 차지하는 데이터

reference type : 주소 타입

  • 배열, 객체, 함수등

primitive

stack 이라는 사물함이있다.

let a; 변수선언하면

이제 이 사물함에 이름표는 a가된다.

a = 1

사물함을보고 a를 찾아서 값을 넣어준다.

a 사물함을 보면 1이 보인다.

b,c... 모두 사물함을 줄수 있다.
let b = 2; let c = 3;

number , boolean , string , null, undefined 가 여기에 들어갈수있다.

reference

stack이라고 불리던 사물함의 절반을 날려주고 그곳을 heap이라고 부른다.

사물함에 주소가 들어간다. 그리고 마찬가지로 위쪽 사물함엔 주소가 들어가고

공간이 생긴 heap영역에는 실제값이 줄줄이 연결되어서 저장된다.

그래서 각 값들은 삭제하고 추가하고 할때 덜 신경써도되게된다. (주소값만으로 해결가능)

배열,객체,함수 가 참조타입 데이터이다.

primitive data vs reference data

무엇이 다른가.

원시타입은 대입 연산을 했을때.

값을 복사해준다.

let a =1;
let b;
a = b;
b= 2;
a // 1;

기존의 값에 영향을 주지않는다.

하지만 참조 데이터는

주소를 주는것이다.


let e = [10,20];
let f = e;
f[0] = 50;
e; // [50,20]

그러므로 기존의 데이터에도 영향을 끼치다.

원시타입?

자바스크립트에서 원시타입은 객체가아니면서 method를 가지지않는 6가지가 있다.

string,number,bigint,boolean,undefined,symbol,(null)

왜 원시 인가 ?

원시 자료형은 모두 "하나"의 정보(데이터)를 담고있다.

옛날에는 코드가 그런식으로밖에 작성할수없으므로 "원시적인" 이라고 생각할수있다.

원시 자료형은 값 자체에 대한 변경이 불가능(immutable)하지만, 변수에 다른 데이터를 할당할 수는 있다.

참조타입?

결국 자바스크립트에서는 원시or참조 인것이다. 배열[] 객체{} 함수function(){}이 대표적이다.

컴퓨터가 처음 사용되던 시절에 배열,즉 리스트라는 개념을 구현하기 어려웠엇는데

띄어쓰기,탭,쉼표 등으로 구분했엇다.

이흔적은 csv(conmma-separated values)에서도 찾아볼 수 있다.

자료구조를 어느정도 공부해보았다면

실제로 리스트에서 push,pop,indexOf 와 같은매서드가 얼마나 구현하기 귀찮은일인지 알게된다.

(C자료구조, C++자료구조해보면 어우..큐,스택을 통째로 배워야한다, 링크드리스트도 마찬가지)

레퍼런스, 우리는보통 참고자료 찾을때 레퍼런스찾는다고 이야기한다.

컴퓨터공학에서는 변수가 가리키고(refer)있는 데이터의 참조한다는 의미로 사용된다.

참조데이터는 동적으로 크기가변한다.. ( 와우.. C에서는 동적할당해줘도 고정값이였고 데이터늘어나면 늘어나는 코드를 작성해야했는데 .. 허헣)

profile
front-back / end developer / Let's be an adaptable person

0개의 댓글