변수 (variable)는 데이터를 저장할 때 쓰이는 '이름이 붙은 저장소'이다.
온라인 쇼핑몰 애플리케이션을 구축하는 경우 상품이나 방문객 등의 정보를 저장할 때 변수를 사용하며,
자바스크립트에선 'let' 키워드를 사용하여 변수를 선언한다.
아래 문(statement)은 'message'라는 이름을 가진 변수를 선언한다.
let message;
이제 할당 연산자 '='를 사용해 변수 안에 데이터를 저장할 수 있다.
let message;
message = 'Hello'; // 문자열을 저장합니다.
문자열이 변수와 연결된 메모리 영역에 저장되었기 때문에 변수명을 이용해 문자열에 접근할 수 있다.
let message;
message = 'Hello';
alert(message); // 변수에 저장된 값을 보여줍니다.
아래와 같이 변수 선언과 값 할당을 한 줄에 작성할 수도 있다.
let message = 'Hello'; // 변수를 정의하고 값을 할당합니다.
alert(message); // Hello !
쉽게 비유하자면,
'상자'안에 데이터를 저장하는데, 이 상자에는 특별한 이름표가 붙는다고 생각하면 된다.
예를 들어, 변수 message는 message라는 이름표가 붙어있는 상자에 "Hello!"라는 값을 저장한 것이라고 생각할 수 있다.
상자 속엔 어떤 값이든지 넣을 수 있고, 원하는 만큼 값을 변경할 수도 있다.
let message;
message = 'Hello!';
message = 'World'; // 값을 변경합니다.
alert(message);
이렇게 값이 변경되면 이전 데이터는 변수에서 제거된다.
변수 두 개를 선언하고, 한 변수의 데이터를 다른 변수에 복사할 수도 있다.
let Hello = 'Hello World!';
let message;
// Hello의 'Hello world' 값을 message에 복사합니다.
message = Hello;
// 이제 두 변수는 같은 데이터를 가진다.
alert(Hello); // Hello World!
alert(message); // Hello World
함수형(functional) 프로그래밍 언어는 변숫값 변경을 금지한다.
이들 언어에서는 '상자 속에' 값이 일단 저장되면, 그 값을 영원히 유지한다.
다른 값을 저장하고 싶다면 새로운 상자를 만들어야 (새 변수를 선언해야)만 한다. 이전 변수를 재사용할 수 없다.
변수 명명 규칙
여러 단어를 조합하여 변수명을 만들 땐 카멜 표기법(camelCase)이 흔히 사용된다.
카멜 표기법은 단어를 차례대로 나열하면서 첫 단어를 제외한 각 단어의 첫 글자를 대문자로 작성하는 방법이다. (ex: myVeryLongName )
let 1a; // 변수명은 숫자로 시작할 수 없습니다.
let my-name; // 하이픈 '-'은 변수명에 포함될 수 없습니다.
변하지 않는 변수를 선언할 땐 let 대신 const를 사용한다.
const myBirthday = '03.11.1992';
위와 같이 const 로 선언한 변수를 '상수(constant)'라고 부른다. 상수는 값을 재할당 할 수 없으므로 상수를 변경하려고 하면 에러가 발생한다.