코어자바스크립트 | 변수 선언과 데이터 할당
변수: 변할 수 있는 데이터를 담는 공간 또는 그릇.
식별자: 데이터를 식별하는 데 사용하는 이름, 즉 변수명.
var a; // 변수 a 선언
a = "abc"; // 변수 a에 데이터 할당
var a = "abc"; // 변수 선언과 할당을 한 문장으로 표현.
자바스크립트 엔진의 동작
메모리 에서 비어있는 공간 확보 -> 공간의 이름 설정 (선언 과정) -> a라는 이름을 가진 주소를 검색해서 문자열 'abc'할당.
실제로는 해당 위치에 문자열 'abc'를 직접 저장하지 않는다.
데이터를 저장하기 위한 별도의 메모리 공간을 다시 확보해서 문자열 'abc'를 저장하고, 그 주소를 변수 영역에 저장하는 식으로 이뤄짐.
변수 영역 + 데이터 영역
데이터 할당의 전체 흐름
- 변수 영역에서 빈 공간(데이터의 주소)을 확보.
- 확보한 공간의 식별자를 a로 지정.
- 데이터 영역의 빈공간에 문자열 'abc'를 저장.
- 변수 영역에서 a라는 식별자 검색. (데이터의 주소)
- 앞서 저장한 문자열의 주소를 데이터 공간(데이터의 주소)에 대입.
변수 영역에 값을 직접 대입하지 않는 이유.
데이터 변환을 자유롭게 할 수 있게 함과 동시에 메모리를 더욱 효율적으로 관리하기 위해서.
자바스크립트는 숫자형 데이터에 대해 64비트 (8바이트)의 공간 확보.
문자열은 정해진 규격 x.
한 글자마다 영어는 1바이트, 한글은 2바이트 등으로 필요한 메모리 용량이 가변적이고 전체 글자 수도 가변적이기 때문에.
만약 미리 확보한 공간 내에서만 데이터 변환이 가능하다면, 변환한 데이터를 다시 저장하기 위해서 확보된 공간을 변환된 데이터 크기에 맞게 늘리는 작업이 선행되어야 한다.
메모리 상에 가장 마지막에 있다면 뒷쪽으로 늘리기만 하면 되겠지만,
가운데 또는 맨 처음이라면 해당 공간보다 뒤에 저장된 데이터들을 전부 뒤로 옮기고, 이동시킨 주소를 각 식별자에게 다시 연결해야하는 작업을 해야함.
👉 즉, 연산이 많아짐.
효율적으로 문자열 데이터의 변환을 처리하려면 변수와 데이터를 별도의 공간에 나누어 저장하는 것이 최적.
위의 예시에서 만약 a = 'abcdef'로 다시 할당한다면 'abc'라고 저장된 공간에 'abcdef'로 바꾸는 것이 아니라 새로운 저장 공간에 'abcdef' 라는 문자열 데이터를 저장하고 해당 주소를 식별자 a에 연결.
다른 예시로 500개의 변수에 모두 같은 숫자 5를 할당한다면, 변수 공간 500개를 확보하고 각 변수 공간마다 매번 숫자 5를 할당해야하고 숫자형은 8바이트가 필요하니까 총 4000바이트를 써야할 것이지만, 5를 별도의 주솟값의 데이터로 저장해두고 해당 주소만 입력해준다면 주소공간의 크기가 2바이트라고 가정했을때 1008(500* 2 + 8)바이트만 이용하면 된다.
변수 영역과 데이터 영역을 분리하면 중복된 데이터에 대한 처리 효율도 높아진다.
Author And Source
이 문제에 관하여(코어자바스크립트 | 변수 선언과 데이터 할당), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@haesoohaesoo/변수-선언과-데이터-할당저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)