기본형은 값이 담긴 주솟값을 바로 복제하는 반면
참조형은 값이 담긴 주솟값들로 이루어진 묶음을 가리키는 주솟값을 복제한다는 점이 다릅니다.
비트(bit) : 0또는 1만 표현할 수 있는 하나의 메모리 조각.
바이트(byte) : 비트를 한단위로 묶음
1byte = 8bit
모든데이터는 바이트 단위의 식별자, 메모리 주솟값(memory address)을 통해 서로 구분하고 연결 짓는다.
변수 : 변할 수 있는 무언가 (데이터)
식별자 : 어떤 데이터를 식별하는데 사용하는 이름 (변수명)
var a; // 메모리에서 비어있는 공간 하나를 확보하고, 이 공간의 이름을 a라고 지정한다.
⭐️ 메모리에서 비어있는 공간 하나를 확보하고, 이 공간의 이름을 a라고 지정한다. 여기서 a는 식별자.
var a; // 메모리에서 비어있는 공간 하나를 확보하고, 이 공간의 이름을 a라고 지정한다.
a = 'abc';
//or
var a = 'abc';
⭐️ 실제로는 문자열 'abc'
를 값 영역에 직접 저장하지 않고,
데이터를 저장하기 위한 별도의 메모리 공간을 다시 확보해서 문자열 'abc'
를 저장하고, 그 주소를 변수영역에 저장한다.
'abc'
를 저장한다.변수 영역에 값을 직접 대입하지 않는 이유 : 데이터 변환을 자유롭게 할 수 있게 함과 동시에 메모리를 더욱 효율적으로 관리하기 위해서,
var a = 'abc'; // "abc"의 마지막에 "def"를 추가하시오!
a = 'abcdef'; // 어떤 과정이 일어날까?
기존에 'abc'
가 저장된 공간에 'abcdef'
를 할당하는게 아니라 새로운'abcdef'
라는 값을 새로 만들어서 별도의 공간에 저장하고, 그 주소를 변수 공간에 연결합니다.
문자열 변환시 무조건 새로운 값을 만들어 새로운 공간에 저장후 그 주소를 기존 변수영역에 저장해준다.
효율적으로 문자열 데이터의 변환을 처리하려면 변수와 데이터를 별도의 공간에 나누어 저장하는 것이 최적이다.
특히 중복된 데이터에 대한 처리 효율이 높아진다.
ex) 500개의 변수를 생성해서 모든 변수에 숫자 5를 할당하는 상황!
- 숫자 5는 별도의 공간에 한번 저장.