[JS] 4. 변수

Jimyu·2023년 10월 15일
0
post-thumbnail

1. 변수란?

변수의 필요성

  • 메모리 : 데이터를 저장할 수 있는 메모리 셀의 집합체
    • 셀 하나에 1바이트(8비트)
    • 각 셀은 고유의 메모리 주소를 가지며, 이 주소는 메모리 공간의 위치를 나타낸다.
    • 컴퓨터는 셀 크기 단위로 데이터 저장하거나 읽어 들인다.
  • 메모리 주소를 통해 직접 값에 접근하려고 하면 아래와 같은 문제점이 있다.
    • 실수로 OS가 사용하고 있는 값을 바꾸면 치명적인 오류 발생 가능
    • 값이 저장될 메모리 주소는 코드 실행 시 메모리의 상황에 따라 임의로 결정되므로 주소는 매번 바뀌고, 따라서 코드를 실행하기 전까지 주소를 알 수 없다.

➡️ 따라서 JS는 개발자의 직접적인 메모리 제어를 허용하지 않는다.
대신 저장된 값을 읽어 재사용하기 위해 변수라는 메커니즘을 제공한다.

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

var result = 10 + 20;
  • 변수명(변수 이름) - result
  • 변수 값 : 변수에 저장된 값 30
  • 할당(대입, 저장) : 변수에 값을 저장하는 것
  • 참조 : 변수에 저장된 값을 읽어 들이는 것

식별자

  • 어떤 값을 구별해서 식별 가능한 고유한 이름
  • 식별자는 값이 아닌 메모리 주소를 기억하고 있다.
  • 클래스, 함수, 변수 등 이름은 모두 식별자!
  • 네이밍 규칙을 준수해야 하며 선언을 통해 JS 엔진에 식별자 존재를 알린다.

2. 변수 선언

  • 변수를 생성하는 것을 의미
  • 1) 값을 저장하기 위한 메모리 공간을 확보하고,
    2) 변수 이름과 확보된 공간 주소를 연결해서 값 저장을 준비하는 것
    - 변수 선언 키워드 : var,let,const

JS의 변수 선언 단계

  • 선언 단계: 변수 이름을 등록해 JS 엔진에 변수 존재 알림
  • 초기화 단계: 값 저장 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화 (JS의 특징)

키워드

  • JS 엔진이 수행할 동작을 규정한 일종의 명령어

var 키워드 변수 선언

  • 선언 단계와 초기화 단계가 동시 진행된다.(undefined)
  • var 키워드로 선언된 변수는 어떤 값도 할당하지 않아도 undefined 값을 가진다.
  • 따라서 쓰레기 값이 들어있을 위험이 적다.

쓰레기 값

  • 이전에 사용하던 값이 남아 있는 것

3. 변수 선언 시점과 변수 호이스팅

  • 변수 선언 시점 : 런타임이 아니라 그 이전 단계에서 먼저 실행
  • 변수 선언 뿐 아니라 모든 선언문(변수 선언문, 함수 선언문 등)을 먼저 실행
    ➡️ 이렇게 변수 선언문이 코드 맨 위에 적혀 있는 것처럼 동작하는 JS 고유의 특징을 변수 호이스팅이라고 한다.

런타임

  • 소스코드가 한 줄씩 순차적으로 실행되는 시점

4. 값의 할당

  • 런타임 이전에 실행되는 변수 선언과는 다르게 값의 할당은 런타임에 실행된다.
var score = 80;
  • 위의 코드처럼 변수 선언과 값의 할당을 하나로 단축 표현해도 선언과 할당은 각각 나누어 실행된다. 따라서 여전히 변수에 undefined로 초기화되는 것은 동일하다.

  • 유의할 점은 값 할당 시 undefined가 있던 메모리 공간을 지우고 할당하는 게 아니라 새 공간을 확보해서 거기에 값을 저장한다.

  • 재할당 : 값이 할당되어 있는 변수에 새 값을 다시 할당하는 것

  • 상수 : 값을 재할당할 수 없어 변수에 저장된 값을 변경할 수 없는 경우. 한 번 정해지면 변하지 않는, 한 번만 할당 가능한 변수다.

profile
블로그 이전 : https://jimyu-s-record.tistory.com/

0개의 댓글