원시 값과 객체 비교
동적 타이핑을 지원하는 자바스크립트에서 데이터의 타입을 크게 2개로 나누는 이유가 있을까요?
값에 의한 전달이 뭔가요?
참조에 의한 전달이 뭔가요?
자바스크립트가 제공하는 7가지 데이터 타입(숫자, 문자열, 불리언, null, undefined, 심벌, 객체 타입)은 크게 원시 타입과 객체 타입으로 구분할 수 있다.
변경 불가능한 값
원시 값을 변수에 할당하면, 변수에는 실제 값이 저장된다.
원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다.
"값에 의한 전달"
변경 가능한 값
객체를 변수에 할당하면 변수에는 참조 값이 저장된다.
객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다.
"참조에 의한 전달"
자바스크립트 엔진이 평가된 값에 따라 타입을 나눈다.
메모리 공간 확보에 있다.
값은 2진수로 메모리에 저장되며, 변수는 해당 메모리 공간의 주소값을 가리키게 되는데,
이때 필욯나 최소 메모리 공간의 데이터 타입에 따라 다르다.
이외에도 데이터 타입이 필요한 이유에는 몇가지가 더 있다.
숫자, 문자, Boolean 등 원시값이 담긴 객체에서 이뤄진다.
객체와 배열 등 객체 타입의 값을 할당할 때 이뤄진다.