[모던 자바스크립트 Deep dive] Study - 4장 변수

n-u·2022년 4월 11일
0
post-thumbnail

4장. 변수

4.1 변수란 무엇인가? 왜 필요한가?

컴퓨터는 CPU로 연산을 하고 연산한 값을 메모리에 저장한다. 하지만, CPU가 연산해서 만들어낸 값은 재사용할 수 없다.

연산한 값을 사용하기 위해서는 메모리 주소를 통해 연산 결과가 저장되어 있는 메모리 공간에 직접 접근해야 하지만 직접 접근하기에 어려움이 있다.

  1. 치명적 오류를 발생시킬 가능성이 매우 높다.
  2. 저장될 메모리 주소는 코드가 실행될 때 메모리 상황에 따라 임의로 결정되어 실행될때 메모리 주소가 변경되어 결과 값을 찾기가 힘들다.

따라서,
프로그래밍 언어는 기억하고 싶은 값을 메모리에 저장하고, 저장된 값을 읽어 들여 재사용하기 위해 "변수"라는 매커니즘을 제공한다.

변수란,

변수
= 하나의 값을 저장하기 위해 확보한 메모리 공간 자체
= 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.
= 값의 위치를 가리키는 상징적인 이름

변수는 하나의 값을 저장하기 위한 매커니즘으로 여러개 값을 저장하려면 여러개의 변수를 사용해야한다.
단, 배열이나 객체 같은 자료구조를 사용하면 그룹화해서 하나의 값처럼 사용할 수 있다.

var user = { id: 1, name:'lee'},
var users = [
	{ id : 1, name: 'Lee'},
    { id : 2, name: 'Kim'}
];

변수명

메모리 공간에 저장된 값을 식별 할 수 있는 고유한 이름

변수에 저장된 값의 의미를 파악할 수 있는 변수명으로 지어야 하며,
명확한 네이밍은 코드를 이해하기 쉽게 만들고, 협업과 품질 향상에 도움을 준다.
용도에 맞게 변수명을 잘 부여해야 한다.

변수값

변수에 저장된 값

할당(대입, 저장)

변수에 값을 저장하는 것

참조(reference)

변수에 저장된 값을 읽어 들이는 것



4.2 식별자

식별자

어떤값을 구별해서 식별할 수 있는 고유한 이름
= 메모리 주소에 붙인 이름
변수명 함수명 클래스명
메모리상에 존재하는 어떤 값을 식별 할 수 있는 이름

식별자는 값이 아니라 메모리 주소를 기억하고 있다.



4.3 변수 선언

변수를 생성하는 것
=> 값을 저장하기 위한 메모리 공간을 확보하고 변수 이름과 확보된 메모리 공간의 주소를 연결해 값을 저장할 수 있게 준비하는 것

var let const 라는 키워드를 사용한다.

var키워드는 블록 레벨 스코프를 지원하지 않고 함수레벨 스코프를 지원하여 심각한 부작용을 발생시켜 ES6 이후에 이를 보완하기 위해 letconst키워드가 등장했다.

var score;  //변수선언(변수 선언문)

이 상태는 값을 할당하지 않은 상태인데 자바스크립트는 var 변수선언에 의해 확보된 공간에 undefined라는 값을 암묵적으로 할당되어 초기화된다.

변수 선언 단계

  1. 선언단계 : 이름을 등록해 자바스크립트 엔진에 변수의 존재를 알림
  2. 초기화단계 : 값을 지정하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화한다.

이 과정은 이전에 다른 애플리게이션이 사용했던 값이 남아 있을 수 있는데(쓰레기 값 garvage value)가 나오는 위험으로부터 안전하게 쓰기 위함이다.

즉, 어떠한 값을 할당하지 않아도 undefined라는 값을 가진다.



4.4 변수 선언의 실행 시점과 변수 호이스팅

profile
기록하며 발전하는 삶

0개의 댓글