반응형
Javascript의 Type 에는 원시자료형(primitive type)과 참조자료형(reference type)이 있다.
쉽게 말하면 원시 자료형은 고정된 저장공간, 참조자료형은 동적인 저장공간이다.
원시자료형(primitive type)
변수에 하나의 데이터만 담을 수 있다. 데이터의 값을 저장한다.
Boolean : true, false
Null : 의도적으로 비워놓은 값
Undefined : 값을 할당하지 않은 변수
Number : 수
String : 문자열
let x=1;
let y = x;//y에 x를 복사하고
y = 3;//y의 값을 바꿔도
x; // 1,
y; // 3,
//기존의 x값은 영향을 받지 않는다.
변수 y에 복사된 x값은 x의 값일 뿐이다.
y에 할당된 값을 아무리 바꾼다 해도 원본 x의 값에는 영향을 주지 않는다.
let a = 'hello'
a[2]//'l'
a[2] = 'z'//a[2]에 'z'를 할당하면 a[2]가 바뀔까??
a[2] //'l'
console.log(a) // 'hello'
//a[2] = 'z'를 입력하였지만 여전히 a = 'hello' 이다. 문자열은 원시타입이기 때문에 원본이 변하지 않는다.
마찬가지로 a의 값은 'hello'로 고정되어 있다.
참조자료형(reference type)
원시자료형을 제외한 모든 자료형, 배열[], 객체{}, 함수function(){}가 대표적이다.
참조자료형을 변수에 할당할 때는 변수에 값이 아닌 주소를 저장한다.
let arr1=[0,1,2,3,4];
let arr2 = arr1;// arr2에 arr1의 주소를 복사한다.
arr2[3] = 999;// arr2에는 arr1의 주소가 복사되어 있기 때문에 arr1[3]에도 999가 할당된다.
arr1;//(5) [0, 1, 2, 999, 4]
arr2;//(5) [0, 1, 2, 999, 4]
//arr1의 값도 바뀐다.
let a = ['h','e','l','l','o']
a[2] // 'l'
a[2] = 'z' // a[2] 에 'z'를 할당한다.
console.log(a) // ["h", "e", "z", "l", "o"]
//배열은 참조타입이라 원본이 바뀌었다. a[2] = 'l' 에서 a[2] = 'z' 로 바뀌었다.
참조자료형 : 생긴건 같지만 본질은 다른 친구들
let a = [1,2,3]
let b = [1,2,3]
a===b // false
//a의 주소와 b의 주소가 다르기 때문에 false이다.
//참조자료형은 값이 아니라 주소를 할당받는다.
참조자료형은 값이 아니라 주소를 할당받는다.
a의 주소랑 b의 주소는 다르다.
반응형
'개발 > Javascript' 카테고리의 다른 글
JavaScript, NaN === NaN 이 False라고??, isNan() (0) | 2021.07.23 |
---|---|
JavaScript : ParseInt() 와 ParseFloat() 그리고 Number() (0) | 2021.07.21 |
조건문을 실행되지 않게 하는 6가지 false값 (0) | 2021.07.20 |
Javascript : Type에 대하여 (0) | 2021.07.20 |
Javascript 함수의 3가지 표현 : 함수 선언식, 함수 표현식, 화살표 함수 (0) | 2021.07.20 |