값의 할당과 재할당
값의 할당
자바스크립트에서 변수에 값을 할당하는 법은 두가지가 있다.
var score; // undefined
socre = 80;
위의 코드는 undefined로 초기화 후 새롭게 할당한 숫자 값 80으로 변경(재할당)된다.
var score = 80;
위의 코드도 동일하게 undefined로 초기화 후 새롭게 할당한 숫자 값 80으로 변경된다.
변수의 선언과 값의 할당을 하나의 문장으로 단축 표현해도 자바스크립트 엔진이 각각 2개의 문장으로 나누어 실행하기 때문이다.
그렇다면 다음 코드의 결과값은 어떨까?
console.log(score); // undefined
score = 80;
var score;
console.log(score); // 80
앞서 말했듯이 변수로 선언된 score는 호이스팅 되어 최상단으로 끌어올려지고 undefined로 초기화 된다. 그 이후 80이라는 값이 할당되어 다음과 같은 결과가 나오는 것이다.
값의 재할당
var score = 80; // 변수 선언과 값의 할당
score = 90; // 값의 재할당
var 키워드로 선언한 변수는 값을 다음과 같이 재할당 할 수 있다. score 변수에는 선언된 직후 undefined로 초기화 된 이후에 숫자 80이라는 값이 할당 되었으므로, 이 또한 재할당이라고 볼 수 있다. 그 이후 90이라는 값으로 다시 한번 재할당 한다.
다음의 사례를 통해 알 수 있듯이 재할당은 변수에 저장된 값을 다른 값으로 변경하는데, 값을 변경할 수 있기에 변수라고 지칭한다.
변수 최초 선언 시 undefined가 할당되고, 그 이후 다른 값이 재할당 될 때마다 변수는 메모리 상의 다른 주소를 참조하게 된다. 그리고 기존의 불필요한 값들은 가비지 콜렉터에 의해 메모리에서 자동 해제되는데(매니지드 언어의 특징), 언제 해제될지는 예측할 수 없다.
프로그래밍 언어는 메모리 관리 방식에 따라 언매니지드 언어와 매니지드 언어로 구분할 수 있는데, C언어와 같은 매니지드 언어는 개발자의 역량에 따라 최적의 성능을 확보할 수 있지만 그 반대의 경우 치명적 오류를 생산할 가능성도 있다.
자바스크립트와 같은 매니지드 언어는 개발자가 명시적으로 메모리를 할당하고 해제할 수 없고 가비지 콜렉터에 의존해야 하지만, 개발자의 역량에 따른 편차를 줄여 일정한 생산성을 확보할 수 있다. 그리고 이는 성능 면에서 어느 정도의 손실을 가져온다.
상수
변수에 저장된 값을 변경할 수 없다면 상수(constant)라고 지칭한다.
한 번만 할당할 수 있는 변수인 것이다.
ES6에서 도입된 const 키워드를 사용해 선언한 변수는 재할당이 금지되는데, 해당 키워드를 사용해 상수를 표현할 수 있다.
Author And Source
이 문제에 관하여(값의 할당과 재할당), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gooroomii/값의-할당과-재할당저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)