자바스크립트 입문_ 변수선언과 데이터 할당
자바스크립트 2021. 5. 3. 11:56(본 포스팅은 위키북스의 '코어자바스크립트' 책을 공부하면서 작성되었습니다_내돈내산)
// 흔한 변수선언 방법
var a ;
변수선언방법은 우리가 흔히 알고 있는 위와같은 방법으로 진행됨. 하지만 이곳에서는 동작 원리에 대해서 설명해보고자 함.
- 위의 말을 말로 풀어썼을 경우 "변할수 있는 데이터를 만든다. 이데이터의 식별자는 a로 한다" 가 될 수 있다.
- 바꿔말하면 변수란 >> 변경가능한 데이터가 담길 수 있는 공간 또는 그릇
주소 | .... | 1002 | 1003 | 1004 | 1005 | ...... |
데이터 | 이름: a 값: |
- 위의 변수선언은 다음과 같은 형태를 가지게됨(메모리 영역의 변화를 가져옴)
// 데이터 할당
var a; // 변수 a선언
a = 'abc' ; // 변수 a에 데이터 할당
var a = 'abc' ; // 변수 선언과 할당을 한 문장으로 표현
- 첫번째 두번째처럼 두개로 나누든, 마지막줄처럼 한개로 표현하던 같은 동작을 수행하게 됨.
- 실제로는 1003 위치에 값을 바로 저장하지 않고 데이터를 저장하기 위한 별도의 메로리 공간을 다시 확보해서 값을 저장한 후 그 주소를 변수영역에 저장하는 식으로 이뤄짐.
주소 | .... | 1002 | 1003 | 1004 | 1005 | .... |
데이터 | 이름 : a 값 : @5004 |
|||||
주소 | .... | 5002 | 5003 | 5004 | 5005 | .... |
데이터 | 'abc' |
1) 변수 영역에서 빈공간(@1003)을 확보한다.
2) 확보한 공간의 식별자를 a로 지정한다.
3) 데이터 영역의 빈공간(@5004)에 문자열 'abc'를 저장한다.
4) 변수 영역에서 a라는 식별자를 검색한다(@1003).
5) 앞서 저장한 문자열의 주소를 @1003공간에 대입한다.
- 뭔가 위와같은 귀찮은 작업이 왜 진행되는가.. 데이터의 변환을 자유롭게 할수 있게 하고, 메모리를 효율적으로 관리하기 위한 결과임.
- 확보한 공간내에서만 데이터 변환이 가능하다면, 변환한 데이터를 다시 저장하기 위해 '확보된 공간을 변환된 데이터 크기에 맞게 조정하는 작업 필요'
- 위와같은 작업은 데이터가 메모리 가장 뒤쪽에 있을땐 문제가 되지 않지만, 중간에 있을 경우 저장된데이터의 동반이동 그리고 이동된 주소를 다시 변수값에 연결해야하는 복잡한 작업을 수반하기 때문에 컴퓨터가 처리해야 할 연산량을 늘리는 꼴이 되어버림..!!
- 이미 데이터 영역에 저장된 데이터를 변경시키려고 할때 ('abc' >> 'abcdef' 처럼) 이미 abc가 저장된공간을변경시키는것이 아니라, 새로운 공간에 abcdef를 만들어 저장하고 그 주소를 새로운 변수공간에 연결함.(어떤 변화를 주던 새로운 공간에 할당시킴)
'자바스크립트' 카테고리의 다른 글
자바스크립트 입문_불변객체 (0) | 2021.05.03 |
---|---|
자바스크립트 입문_변수의 복사 (0) | 2021.05.03 |
자바스크립트 입문_가변값 (0) | 2021.05.03 |
자바스크립트 입문_불변값 (0) | 2021.05.03 |
자바스크립트 입문_데이터 타입 (0) | 2021.05.03 |