[JavaScript]변수(Variable)

코딩하는김선생·2021년 11월 9일

변수란 무엇인가?

변수는 프로그래밍 언어에서 값을 저장하고, 참조하는 메커니즘으로 값의 위치를 가르키는 상징적인 이름이다.
프로그래밍 언어의 컴파일러 또는 인터프리터에 의해 값이 저장된 메모리 공간의 주소로 치환되어 실행된다.
따라서 직접 메모리 주소를 통해 값을 저장하고 참고할필요가 없고 변수를 통해 안전하게 값에 접근할 수 있다.

let result = 5 + 210

변수 선언: let
값을 저장하기 위한 메모리 공간 확보 하며 선언을 할때는 var, let, const 키워드를 사용한다.
변수를 선언한 이후 값을 미할당 했을 경우 undefined라는 값이 암묵적으로 할당되어 초기화 된다.
변수이름: result
저장된 값을 식별할 수 있는 고유한 이름이다. 변수의 이름은 개발자의 의도를 나타내는 명확한 네이밍을 해야 코드를 이해하기 쉽게 만들며, 이는 협업과 품질 향상에 도움을 준다.
변수 값: 30
변수에 저장된 값이다. 변수에 값을 저장하는 것은 할당이라 하고, 변수에 저장된 값을 읽어 들이는 것을 참조 라고한다.

호이스팅

변수는 언프리터 언어이므로 한줄씩 순차적으로 실행되므로 변수 선어문보다 변수를 참조하는 코드가 앞에있으면 reference 오류가 발생할것처럼 보이지만, 에러는 발생하지 않는다.
예들들어 아래 예시에서 변수 a가 선언되기 전에 console.log로 출력을 하더라도 에러가 발생하지 않고, undefined를 출력한다.

// 개발자가 입력한 소스 코드 
console.log(a); // undefined
let a = 80; // let 변수 
console.log(a); // 80

//호이스팅 된 소스 코드
let a;// 런타임 이전 단계에서 먼저 실행
console.log(a); // undefined
a = 80; // 런타임에 실행
console.log(a); //80

그 이유는 변수 선언이 소스코드가 순차적으로 실행되는 런타임 이전 단계에서 먼저 실행되기 때문이다.
여기서 주의할 점은 변수 선언은 런타임 이전단계에서 먼저 실행되지만 값의 할당은 런타임에 실행된다.
이처럼 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 변수 호이스팅 이라고 한다.

값의 재할당

var, let 키워드로 선언한 변수는 값을 재할당 할 수 있다.
재할당은 현재 변수에 저장된 값을 버리고 새로운 값을 저장하는 것이다.

let a = 80; // 변수 선언과 값의 할당
a = 50; //값의 재할당
console.log(a) // 50

선언한 변수는 선언과 동시에 초기화시키기 때문에 초기값은 undefined이므로 엄밀히 말하면 변수에 처음으로 값을 할당하는 것도 재할당이라고 할 수 있다. 약 변수에 저장된 값을 변경할 수 없다면 변수가 아니라 상수라고 한다. 즉 단 한번만 할당할 수 있는 변수이다.
이런 변수는 const로 선언한다.

const a = 50;
a = 50; // ncaught TypeError: Assignment to constant variable.

변수의 재할당 후 이전값들은 어떤 변수도 값으로 갖고 있지 않다.
즉 어떤 식별자와도 연결되지 않으므로 더이상 필요하지 않은 값이다. 이러한 불필요한 값들은 가비지 콜렉터에 의해 메모리에서 자동 해체된다. 단, 메모리에서 언제 해체 될지는 예측할 수 없다.

틀린지식에 대해서는 가감없이 지적해주시길 바랍니다.

0개의 댓글