원시타입은 ? 값에의한 전달
이 일어나는 데이터타입.
let a = 5;
let b = 10;
let x = a;
let y = b;
위 예제를 봅시다. 변수 a 와 b 는 원시타입을 가진 변수 입니다.
이 변수들을 다른 변수에 할당하게 되면, 새로운 변수에 값을 '복사' 해서 넣는 것입니다.
위 사진처럼, a 의 값을 바꿨지만 x 는 어떤 영향도 받지 않았습니다.
각 변수들은 사실 아무런 관계가 없다는 것입니다.
이는 바로, 값이 직접 바뀌거나, 참조되는것이 아니라 '복사' 되었기 때문입니다.
원시타입이 아닌 값이 할당되면, 해당 변수는 그 값을 가리키는 참조를 가지게 됩니다.
참조는 메모리에서 객체의 위치 (주소) 를 나타냅니다. 즉, 변수는 실제로 그 값을 가지는 것이 아니라 객체의 위치를 찾을수 있는 주소만을 가집니다.
예를 들어봅시다.
let arr = []
arr.push(1);
이렇게 변수의 값은 바뀌지 않습니다.
메모리 속의 값만 바뀌며, 변수는 단지 해당 메모리 주소로 가서 그 값을 보여주기만 할 뿐입니다.
참조 타입의 값이 다른 변수로 복사될때에, 값의 '주소'는 실제로 복사가 됩니다.
let Ref = [1];
let RefCopy = Ref;
이렇게 된다면, RefCopy 의 값은 Ref의 주소가 되겠지요.