[모던자바스크립트 딥다이브] 4장 변수

zzzzzang_gu·2023년 2월 4일
0

자바스크립트

목록 보기
1/23

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

애플리케이션은 데이터를 다룬다. 변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념이다.

10 + 20

10+20 이라는 식을 보면 컴퓨터는 10+20이라는 식의 +연산을 수행하기 위해 10,20(피연산자)을 기억하는 공간을 메모리라고 한다.
프로그래밍 언어는 기억하고 싶은 값을 메모리에 저장하고, 저장된 값을 읽어 들여 재사용하기 위해 변수라는 메커니즘을 제공한다. 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 공간을 식별하기 위해 붙인 이름을 말한다.

즉 변수는 값의 위치를 가르키는 상징적인 이름이다.

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

식별자

식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말한다. 식별자는 어떤 값이 저장되어 있는 메모리 주소를 기억(저장)해야 한다.

식별자는 값이 아니라 메모리 주소를 기억하고 있다. 즉 식별자는 메모리 주소에 붙인 이름이라고 할 수 있다.

식별자라는 용어는 변수 이름에만 국한해서 사용하는 것이 아니라 변수,함수,클래스 등의 이름은 모두 식별자다.
메모리 상에 존재하는 어떤 값을 식별할 수 있는 이름은 모두 식별자다.

변수선언

변수 선언이란 값을 저장하기 위한 메모리 공간을 확보하고 변수 이름과 확보된 메모리 공간의 주소를 연결해서 값을 저장할 수 있게 준비하는 것이다.
변수를 사용하려면 반드시 선언이 필요하다. 선언에는 let ,const,var 키워드를 사용한다.

변수를 선언한 이후, 아직 변수에 값을 할당하지 않았을때 메모리 공간이 비어있을거라 생각할 수 있지만 자바스크립트 엔진은 변수가 선언될 때 암묵적으로 undefined를 할당하여 초기화한다.

만약 선언하지 않은 식별자에 접근하려할 경우 Reference Error가 발생한다.

Reference Error(참조에러) : 자바스크립트 엔진이 등록된 식별자를 찾을 수 없을때 발생하는 에러다.

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

변수 선언은 자바스크립트가 한줄씩 실행되는 런타임 시점이 아니라 그 이전 단계에서 실행된다.

자바스크립트 엔진은 소스코드를 한 줄씩 순차적으로 실행하기에 앞서 먼저 소스코드의 평가 과정을 거치면서 준비를 한다.

이때 평가 과정에서 변수 선언을 포함한 모든 선언문(변수 선언문,함수 선언문 등)을 소스코드에서 찾아내 먼저 실행한다.

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

값의 할당

변수에 값을 할당하다. 할당 연산자 (=)는 우변의 값을 좌변의 값에 할당(저장,대입)한다.

var score = 100;

변수 선언과 값의 할당을 한 문장으로 단축해도 코드는 정확히 동일하게 작동한다. 이때 주의할 점은 변수 선언과 값의 할당의 실행 시점이 다르다는 점이다.

변수 선언은 런타임 이전, 평가 과정에서 이루어지며 변수에 암묵적으로 undefined가 할당된다. 그 후에 런타임 과정에서 변수 score에 값 100이 할당되는것이다.

console.log(score) // undefined 호이스팅을 통해 레퍼런스 에러가 아닌 undefined가 할당된 것을 확인할 수 있다.

score = 100; // 런타임 과정에서 차례대로 한 줄씩 실행되며 변수 score에 100이 할당된다.
var score; // 런타임 이전 평가과정에서 score 변수가 선언된다.

console.log(score) // 100

값의 재할당

재할당은 변수에 저장된 값을 다른 값으로 변경한다. 그래서 변수라고 하는 것이다.
var 키워드로 선언된 변수는 평가과정에서 이미 undefined가 할당되어 초기화되기 때문에 엄밀히 말하자면 변수에 처음으로 값을 할당하는것도 재할당이라고 볼 수 있다.

만약 값을 재할당 할 수 없어서 변수에 저장된 값을 변경할 수 없다면 변수가 아니라 상수라고 한다. -> const 키워드 사용

식별자 네이밍 규칙

  • 식별자는 특수문자를 제외한 문자,숫자,(_)언더스코어,($)달러 기호를 포함할 수 있다.
  • 식별자는 특수문자를 제외한 문자,언더스코어,달러기호로 시작해야한다. 숫자는 허용하지 않는다.
  • 예약어는 식별자로 사용할 수 없다.
  • 자바스크립트는 대소문자를 구별한다.

네이밍 컨벤션 : 하나 이상의 영어 단어로 구성된 식별자를 만들때 가독성 좋게 단어를 한눈에 구분하기 위해 규정한 명명 규칙

  • 카멜 케이스, 스네이크 케이스, 파스칼 케이스, 헝가리안 케이스

코드 전체의 가독성을 높이려면 카멜 케이스, 파스칼 케이스를 따르는 것이 유리하다.

profile
프론트엔드 개발자가 되겠습니다🔥

0개의 댓글