[JS Basic] 변수

재오·2022년 9월 9일
1

JavaScript

목록 보기
1/48
post-thumbnail

변수

변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다. 한마디로 정리하자면 변수는 값의 위치를 가리키는 상징적인 이름을 의미한다. 하지만 다른 언어와는 다르게 자바스크립트는 변수를 선언하는 순간 확보된 메모리 공간에 undefined 라는 값이 암묵적으로 할당되어 초기화된다. 이것이 자바스크립트만의 독특한 특징이다.

자바스크립트 엔진은 변수 선언을 '선언 단계'와 '초기화 단계'로 구분지어 2단계에 걸쳐 수행된다. 변수 이름을 등록하는 것이 선언 단계이고 위에서 언급한 것과 같이 undefined를 할당해 초기화하는 작업이 초기화 단계이다.

- 변수 호이스팅

다음 코드를 한번 살펴보자

console.log(score);
var score;

이 코드의 실행순서는 어떻게 될까?
순서대로 코드가 실행된다면 변수를 선언하기 이전이므로 오류가 뜰 것으로 예상되지만 실제로는 undefined가 실행된다. 이유는 바로 자바스크립트 엔진이 변수 선언을 포함한 모든 선언문을 소스코드에서 찾아서 먼저 실행하기 때문이다. 따라서 선언문인 'var score'가 먼저 실행되는 것이다. 이것을 "변수 호이스팅" 이라고 한다.

- 변수 할당

변수 선언은 런타임 과정에서 가장 먼저 실행이 되지만 변수의 할당은 코드 작성 순서대로 이루어진다. 밑에 이미지와 같이 undefined가 저장되어 있던 메모리 공간을 지우고 그 메모리 공간에 할당 값 'jiyong'를 새롭게 저장하는 것이 아니라 새로운 메모리 공간을 확보하고 그곳에 할당 값 'seventwo'를 저장한다는 점을 주의해야 한다.

- 가비지 콜렉터

'가비지 콜렉터'란 위에 이미지와 같이 변수의 값을 재할당했을 경우 더이상 사용되지 않는 메모리 (위 그림에서는 회색으로 채워진 칸)를 해제하는 기능을 말한다. 하지만 메모리에서 언제 해제되는지는 알 수가 없다.

- 자바스크립트 네이밍 컨벤션

자바스크립트에서 주로 많이 사용하는 네이밍 컨벤션은 크게 '카멜 케이스'(firstName)와 '파스칼 케이스'(FirstName)이다. 일반적으로 카멜 케이스는 변수나 함수의 이름에, 파스칼 케이스는 생성자 함수나 클래스의 이름에 사용한다.

profile
블로그 이전했습니다

0개의 댓글