타입의 종류
primitive type: Number,String,Boolean,null,undefined,symbol이 있으며 값을 복제한다.
reference type: Array,Function,Date,RegExp,Map,WeakMap,
Set,WeakSet 참조값을 복제한다.
기본형 데이터와 참조형 데이터
변수와 상수를 구분하는 것은 변수영역의 메모리(StackMemory)이다. 즉, stack에 있는 값을 바꿀수 있으면 변수이고 바꿀수 없으면 상수이다.
let a =1;
const b =10;
상수와 불변성
상수와 불변성을 오해하기 쉽다.
let a = 'abc';
let a = a + 'def';
let a = 1;
let a = 2;
let c = 1;
1. Heap 메모리의 주소가 callstack에 참조되지 않으면 Garbage collector의 관리를 받는다.callstack 값이 변수에 값이 할당하지 않으면 마찬가지이다.
2. 정수형에서 C 와 Java는 stack 메모리에 값을 저장하며 새로운 값을 같은 주소에 다시 저장한다.
3. 숫자형은 기본적으로 8bytes를 가진다.그리고 불변성이다. 값이 변경되면 메모리 주소가 바뀐다.
let a= 1;
let b =1;
++b;
--b;
원시 값을 가진 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다. 이를 call by value 또는 pass by value 라고 한다
javascript의 원시데이터는 stack을 사용한다.
undefined와 null의 차이점
- undefiend : 변수는 존재하나, 어떠한 값으로도 할당되지 않아 자료형이 정해지지(undefined) 않은 상태
- null : 변수는 존재하나, null 로 (값이) 할당된 상태. 즉 null은 자료형이 정해진(defined) 상태