반응형
반응형
자바스크립트의 변수타입에는 두가지가 있다
- 원시타입(Primitive Type)
- 참조타입(Reference Type)
원시타입은 자바스크립트의 기본 자료형들이 포함되어있다. 예를 들어 string, int, boolean, undefined등등 이 있으며, 원시타입같은 경우에는 메모리 크기가 변수할당될때 고정으로 할당되며, 저장된 값을 직접 가리키는 구조로 되어있다. 또한 원시타입 값들은 불변성(값이 변하지 않음)이라는 특징도 있다. 재할당( 변수 = value )의 형태도 기존 변수가 직접 가리키는 메모리 주소의 값이 바뀌는게 아닌 메모리에 새로운 값이 고정으로 할당되어 직접 가리키는 값이 달라지는 원리이다.
이 원시타입을 제외한 나머지를 참조타입이라고 한다. 참조타입을 흔히 '객체'라고 부르며, 원시타입과 달리 변수의 크기가 동적인 성질을 가지고 있다는 것이다. 참조타입은 heap영역에 저장이 되고, 변수에 참조타입을 할당할때는 해당 참조타입을 가리키는 주소값이 할당되게 되는것이다. 원시 타입, 참조타입 각각 이러한 성질이 있기때문에, 아래 코드와 같이 함수에 매개변수로 전달시, 원시타입 같은경우는 매개변수에 값을 그대로 복사하여 전달하기에 변하지 않지만, 참조타입 경우는 메모리 주소를 전달하기 때문에, 값이 변하게 된다.
function changeValue(primitive, obj){
primitive += 100;
obj.name = "Name";
}
var num = 100;
var obj = {
name : "Kim"
};
console.log(num); // 100
console.log(obj); // name : Kim
changeValue(num,obj);
console.log(num); // 100
console.log(obj); // name : Name
반응형
'Web Basic > JavaScript' 카테고리의 다른 글
함수 - 호이스팅(Hoisting)이란? (0) | 2019.02.05 |
---|