
변수는 데이터를 담는 그릇이다.
자바스크립트에서는 변수에 데이터뿐만 아니라 오브젝트 및 함수도 담을 수 있다. 데이터/오브젝트/함수 등을 사용하겠다고 선언하는 것을 변수를 선언한다고 한다. 변수를 선언하게 되면 자바스크립트는 변수 값을 저장하기 위한 메모리 공간을 확보하고 값을 저장하는데, 변수를 선언할 때 사용한 변수명을 통해 값이 저장되어 있는 메모리 공간에 연결하게 된다. 정확히는 변수명이 값이 저장되어 있는 메모리 위치를 기억하고 참조 중인 상태가 되는 것이다.
상수는 변화하지 않는 값을 가지고 있는 변수를 뜻한다.
자바스크립트에서 변수는 var, let 키워드를, 상수는 const 키워드를 사용한다.
자바스크립트에서는 데이터를 변수 선언자, 변수명, 할당할 값 형식으로 선언해서 사용한다.

변수명 규칙
네이밍 컨벤션이란 변수명을 짓는 규칙이다. 자바스크립트를 포함한 프로그래밍 언어 모두 변수명을 만들 때 크게 4가지 규칙을 사용한다.
let userName=""; //카멜 표기법
let user_name=""; //스네이크 표기법
let UserName=""; //파스칼 표기법
let strUserName=""; //헝가리언 표기법
자바스크립트에서는 3가지 형태의 변수 선언자를 제공한다. 변수를 저장할 때는 var 선언자와 let 선언자를 사용하고 변하지 않는 상수 값을 저장할 때는 const 선언자를 사용한다.
자바스크립트에서는 데이터 타입에 상관없이 변수를 저장할 때 var 선언자와 let 선언자를 사용할 수 있다.
var x=5; //변수 x에 5를 저장
var y=6; //변수 y에 6을 저장
var z=x+y; //변수 z에 변수 x와 변수 y를 더한 값을 저장
var로 변수를 선언하면, 같은 자바스크립트 코드 안에서 동일한 변수명을 사용하는 것이 가능하다.
var x=5; //변수 x에 5를 저장
var y=6; //변수 y에 6을 저장
var z=x+y; //변수 z에 변수 x와 변수 y를 더한 값을 저장. z에는 11이 저장됨
var x=7; //변수를 새로 선언하고 변수명 x에 7을 저장
z=x+y; //변수 z에 변수 x와 변수 y를 더한 값을 저장. 기존에 저장되었던 값은 사라지고 새로운 값으로 바뀌게 된다. z에는 13이 저장됨
var 선언자를 사용하면 동일한 변수명을 사용해도 에러가 나지 않기 때문에 매번 새로운 변수명을 만들어서 사용하지 않아도 된다는 장점이 있다. 하지만 동일한 변수명으로 변수가 새로 선언되면, 기존 코드에서 동일한 이름으로 사용되던 변수에 할당된 값이 사라지므로, 해당 변수를 참조하고 있는 프로그램에 에러가 발생할 수 있다.
let 선언자는 ES6에 추가된 선언자이다. 변수를 선언하고 값을 할당하는 방식은 var과 동일하지만 변수 선언자로 let을 사용한다.
let으로 변수를 선언하면 동일한 변수명을 갖는 변수를 재선언해서 사용할 수 없다.
특별한 경우가 아니라면 var를 사용하기보다 let을 사용하는 것을 추천한다.
let x=5; //변수명 x에 5를 저장
let y=6; //변수명 y에 6을 저장
let z=x+y; //변수명 z에 변수 x와 변수 y를 더한 값을 저장. z에는 11이 저장됨
x=7; //변수 x에 7을 저장
let x=7; //에러 발생. 동일한 변수명인 x로 재선언 불가능
const 선언자는 ES6에 추가된 선언자이다. const는 변화하지 않는 변수를 선언할 때 사용한다. const로 선언한 변수를 '상수(constant)'라고 부른다.
const 선언자를 사용할 경우 선언 시점에 값을 할당한 후 같은 변수명으로 재선언뿐만 아니라 이미 선언된 변수의 값도 변경할 수 없다. 즉 선언 시점에 할당한 값을 절대로 변경하지 않는 용도로 사용한다.
const x=5; //변수명 x에 5를 저장
const y=6; //변수명 y에 6을 저장
const z=x+y; //변수명 z에 변수 x와 변수 y를 더한 값을 저장. z에는 11이 저장됨
x=7; //에러 발생
const x=7; //에러 발생