본문 바로가기
Study/Javascript 왕초보

[Javascript] 4장 변수 (deep dive)

by jeongwle 2022. 4. 29.
728x90
반응형

변수

  • 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름
  • 값의 위치를 가리키는 상징적인 이름
  • 변수에 값을 저장하는 것을 할당(대입, 저장)이라 하고 변수에 저장된 값을 읽어 들이는 것을 참조라 한다.

 

식별자

  • 어떤 값을 구별해서 식별할 수 있는 고유한 이름
  • 식별자는 값이 아니라 메모리 주소를 기억하고 있다.

 

식별자 네이밍 규칙

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

 

변수 선언

  • 변수를 사용하려면 반드시 선언이 필요하다. 자바스크립트에서는 var, let, const 키워드를 사용한다.
    ※ var 키워드는 여러 단점이 존재한다고 한다. 가장 대표적인 것으로는 블록 레벨 스코프를 지원하지 않고 함수 레벨 스코프를 지원한다는 것이다. 이로 인해 의도치 않게 전역변수가 선언되어 심각한 부작용이 발생하기도 한다고 한다. 하지만 책에서 우선 var에 대해 알려주고 있으니 공부는 해두자.
  • 변수 선언으로 확보된 메모리 공간은 초기화를 하지 않아도 자바스크립트 엔진에 의해 undefined라는 값이 암묵적으로 할당되어 초기화 된다.

 

변수 호이스팅(variable hoisting)

  • 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징
  • 선언문들이 먼저 실행된 후 소스코드가 순차적으로 실행된다.
    이는 변수에만 국한된 것이 아니라 var, let, const, function, function*, class 키워드를 사용해서 선언하는 모든 식별자(변수, 함수, 클래스 등)는 호이스팅된다. 모든 선언문은 런타임 이전 단계에서 먼저 실행
console.log(score); // undefined 
var score; // 변수 선언문

 

값의 할당

  • 변수에 값을 할당할 때는 할당 연산자 =를 사용한다. 할당 연산자는 우변의 값을 좌변의 변수에 할당한다.
  • 변수 선언은 소스코드가 순차적으로 실행되는 시점인 런타임 이전에 먼저 실행되지만 값의 할당은 소스코드가 순차적으로 실행되는 시점인 런타임에 실행된다.
console.log(score); //undefined 
var score; // 변수 선언 
score = 80; // 값의 할당 
console.log(score); // 80

 

값의 재할당

  • 재할당이란 이미 값이 할당되어 있는 변수에 새로운 값을 또다시 할당하는 것을 말한다.
  • 값을 재할당할 수 없어서 변수에 저장된 값을 변경할 수 없다면 변수가 아니라 상수(constant)라 한다. const 키워드를 사용하면 상수를 표현할 수 있다.
728x90
반응형

댓글