- 선언(declaration): 특정 주소의 메모리 공간에 이름(식별자; identifier) 부여.
- 식별자(identifier)는
글자, $, _
로 시작.(숫자, 공백으로 시작 불가)
- 하지만 밑줄로 시작하는 것은 아주 특별한 상황 또는 내부변수에서만 이용.
$
는 보통 제이쿼리의 객체로 이용.
- 식별자(identifier)는 유니코드 문자 가능.
- 식별자(identifier)는 키워드(let, const)를 포함한 return, for 등 예약어 불가.
- 식별자(identifier)는 클래스를 제외하고는 보통 소문자로 시작.
- 보통 카멜 케이스(소문자 시작)를 이용.
- 할당: 특정 값(value)을 메모리에 담는 것.
- 할당 하지 않으면
undefined
값을 가짐.
- 선언하는 방법: 변수(variable), 상수(constant)
- 변수와 상수는 특정 주소를 가진 메모리 공간을 지칭.
- 변수 값과 상수 값은 특정 주소를 가진 메모리 공간에 들어있는 값(value)을 지칭하는 것.
- 데이터를 보관하는 메커니즘.
- 정의(definition)는 선언하는 동시에 할당하는 것.
- 선언(declaration)과 정의(definition)은 명확하게 다른데, 선언은 식별자를 이용해 그 존재를 알리는 것이고 정의는 선언과 함께 값을 부여하는 것.
- 다만 JS에서는 선언하는 동시에 값이 주어짐으로 두 용어가 크게 구분되지 않음. (명시적으로 정하지 않으면 undefined가 암시적으로 주어지므로)
- 리터럴(literal)
- 값(value)을 지정하는 방법 또는 그 값을 이루고 있는 자체; 값을 이루는 최소 단위
- 숫자 리터럴, 문자열 리터럴, 불리언 리터럴, 배열 리터럴, 객체 리터럴, 함수 리터럴, 정규 표현식 리터럴.
- 자바스크립트는 제공된 리터럴(literal)을 받아 데이터(0과 1)로 만듬.
- 직접 입력된(타이핑된) 데이터.
- 변하지 않는 고정됨.
- 데이터의 타입을 표현함.
변수(variable)
let value = 1;
value = 2;
- 같은 블록범위에서 재선언 불가. (block scope)
let value = 1;
let value = 2;
let
문 하나에서 변수 여러 개 선언 및 할당 가능
let schoolName1 = SNU, schoolName2 = KNU, schoolName3 = NYU;
상수(constant)
const
키워드(예약어) 사용.
- 선언과 즉시 할당 해야함. (후 할당 불가)
- 재할당 불가. (값이 변하지 않는 변수)
const a = 1;
a = 2;
- 같은 블록범위에서 재선언 불가. (block scope)
const a = 1;
const a = 2;
const
문 하나에서 상수 여러 개 선언 및 할당 가능
const SCHOOL_NAME_1 = SNU, SCHOOL_NAME_2 = KNU, SCHOOL_NAME_3 = NYU;
- 일반적으로 상수 식별자(identifier)에는 대문자와 밑줄 이용.
- 꼭 필요한 경우가 아니라면 변수가 아닌 상수를 이용.
var
var
키워드(예약어) 사용.
- 구 버전 변수선언 키워드.
- 권장하지 않음.
- 같은 블록범위에서 재선언 가능.
var a = 1;
var a = 2;
var
과let
의 사용할 수 있는 범위가 다름.
- 구형 브라우저에서는
let
과 const
를 지원하지 않는 경우가 있음.
- babel 을 이용해서 해결.