04. 변수

min_bok_·2022년 11월 19일
0

JavaScript

목록 보기
1/5

변수란?

  • 메모리 공간에 저장된 값을 식별할 수 있는 고유한 이름
  • 값을 메모리에 저장하고 재사용할 수 있게함
  • 변수에 값을 저장하는 것을 할당(대입, 저장)
  • 변수에 저장된 값을 읽어들이는 것을 참조

컴퓨터가 데이터를 저장하는 방법

컴퓨터는 CPU를 사용해 연산하고 메모리를 사용해 데이터를 기억하는데, 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체로 각 셀은 고유한 메모리 주소를 가짐

메모리 주소로 값에 접근하기

  • 메모리주소를 통해 값에 직접 접근하는 것은 치명적 오류를 발생시킬 가능성이 매우 높은 위험한 일이므로 자바스크립트는 개발자의 직접적인 메모리 제어를 허용하지 않음
  • 또한 동일한 컴퓨터에서 동일한 코드를 실행해도 코드가 실행될 때 마다 값이 저장될 메모리 주소는 변경되므로 메모리 주소를 통해 값에 직접 접근하려는 시도는 올바른 방법이 아님

변수로 값에 접근하기

  • 변수는 프로그래밍언어의 컴파일러 또는 인터프리터에의해 값이 저장된 메모리 공간의 주소로 치환되어 실행되므로 개발자가 변수를 통해 안전하게 값에 접근할 수 있게함

변수 선언

  • 변수를 생성하는 것
  • 값을 저장하기 위한 메모리 공간을 확보하고 변수이름과 확보된 메모리 공간의 주소를 연결하여 값을 저장할 수 있도록 준비
  • var, let, const 키워드를 사용

자바스크립트 엔진은 변수 선언을 2단계에 걸쳐 수행

1. 선언단계

변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재를 알림

2. 초기화 단계

  • 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화
  • 초기화란 변수가 선언된 이후 최초로 값을 할당하는 것을 의미함

변수 호이스팅

  • 변수 선언문이 코드의 선두로 끌어올려진것 처럼 동작하는 자바스크립트 고유의 특징을 변수 호이스팅이라고 함

변수선언과 할당

  • 변수선언을 포함한 모든 선언문(변수 선언문, 함수 선언문)은 런타임 이전에 소스코드평가를 거치며 실행되며, 이 과정이 끝나면 선언문을 제외하고 런타임이 실행됨
  • 자바스크립트 엔진은 변수선언의 위치에 상관없이 변수선언을 다른 코드보다 먼저 실행함 => 변수 호이스팅
  • 값의 할당런타임에 실행됨

값의 재할당

  • 현재 변수에 저장된 값을 버리고 새로운 값을 저장하는 것

재할당 값을 저장하는 방식

  • 변수에 값을 재할당하면 기존의 메모리공간을 지우고 그 공간에 재할당값을 새롭게 저장하는 것이 아니라 새로운 메모리 공간을 확보하고 그 메모리공간에 재할당값을 저장
  • 이전 값은 어떠한 식별자와도 연결되어있지않은 불필요한 값이되며 가비지 콜렉터에 의해 메모리에서 자동해제
  • 가비지 콜렉터의 실행 시점은 예측할 수 없음

가비지 콜렉터

  • 가비지 콜렉터는 메모리공간을 주기적으로 검사하여 더이상 사용되지않는 메모리(어떠한 식별자도 참조하지 않는 메모리공간)를 해제하는 기능
  • 메모리 누수를 방지함

식별자 네이밍 규칙

  • 문자, 숫자, 언더스코어(_), 달러기호($) 사용가능
  • 숫자로 시작할 수 없음
  • 예약어 사용불가능
  • 대소문자를 구분
  • 변수의 존재 목적을 쉽게 이해할 수 있도록 작성해야함
  • 변수, 함수 이름 => 카멜케이스 ex) firstName
  • 생성자 함수, 클래스 이름 => 파스칼케이스 ex) FirstName

0개의 댓글