프로그램을 만들 때 잠깐 동안 특정한 값을 저장해야 하는 상황이 발생하는데, 이때 사용하는 것이 변수이다.
let americano = 3000;
let caffelatte = 4000;
let total = 3000 + 4000;
이라고 선언을 하고 console에 선언한 변수를 입력한다면 저장된 값이 출력된다.
> console.log(americano);
3000
< undefined
> console.log(caffelatte);
4000
< undefined
> console.log(total);
7000
< undefined
지금까지는 간단한 숫자를 저장을 했지만 만약에 복잡한 숫자를 저장한다면 많이 유용하다
let number = 9606053142;
만약 이렇게 복잡한 숫자를 변수선언 없이 계속해서 사용한다고 생각한다면 매번 저 숫자를 입력 해야한다. 하지만 변수를 선언했기 때문에 number만 입력해도 9606053142라는 숫자가 나오게 될 것이다.
> let empty; let empty
// 만약 이렇게 같은 변수를 같은 줄에 선언을 한다면 Error가 발생한다.
따라서 변수명이 겹치지 않도록 주의를 해야한다.
변수명을 지을때 직관적으로 어떤 역할을 하는지 알아보기 쉽게 지어야 한다. 그리고 변수명은 한글로도 지을 수 있고 키보드에 존재하는 특수문자 중에서는 $,_만 쓸 수 있다.
> let 한글 = '세종대왕';
< undefined
> 한글
< "세종대왕"
> let $_ = 'hello';
< undefined
> $_
< "hello"
그리고 변수명을 지을때 숫자도 사용할 수 있다. 단, 숫자가 첫 글자면 안된다.
> let banana2 = 'banana';
< undefined
> banana2
< "banana"
> let 2banana = 'banana';
< Error
변수명을 지을 때 띄어쓰기도 안된다. 하지만 이러한 점을 보완하기위해 암묵적인 방법이 존재한다.
> let Cassandra is babo = 'babo';
< Error
> let CassandraIsBabo = 'babo';
< undefined
> CassandraIsBabo
< "babo"
띄어쓰기 대신 띄어쓰기 하는 부분을 대문자로 바꾸게 되어 띄어쓰기를 구별한다.
변수를 바꾸는 방법에 대하여 알아보자.
> let change = '바꿔라';
< undefined
> change
< "바꿔라"
> change = '바꿨다';
< "바꿨다"
> change
< "바꿨다"
변수 안에 있는 값을 비우는 방법
> change = null;
< null
> change = undefined;
< undefined
null이나 undefined 둘다 변수값을 비울수 있다 하지만 null을 쓰는 것을 추천한다
왜냐하면 undefined는 기본값 역할을 하기때문에 undefined를 쓴다면 의도적으로 비웠다는것을 모르지만 null을 쓴다면 의도적으로 비웠다고 파악하기 쉽기 때문이다.
// 여기서 부터는 예시이다.
> let k = '111'; // 변수k의 값을 지정
< undefined
> k = null; // 변수를 비웠다.
< null
> k // k를 선언하면 당연히 비어있기 때문에 null이 나온다.
< null // 이런식으로 null을 써서 누군가 의도적으로 비워 놨다고 알릴 수 잇다.
> k = undefined; // k를 undefined로 비워보자
< undefined
> k
< undefined // 이 값은 기본값인 undefined로 선언 되었기 때문에 의도적으로 비워 놓은 값인지 아니면 선언을 하지 않은 값인지 알 수 없다.
> let number = 5;
< undefined
> number = number + 4;
< 9
여기서 왜 이런 식이 나오는지 납득이 안되는 사람들이 있을 것이다. 하지만 자바스크립트에서 = 는 같다가 아닌 대입이다.
a = b // 이것은 b를 a로 대입하는 것이다.
a == b // 값은 비교하지만 자료형은 비교하지않는다.
a === b // 값과 자료형 둘다 비교한다.
> number = number + 4;
< 9
> number += 4;
< 9
//즉 위아래 식이 같음
위와 같이 두개의 방법이 있으니 적절히 활용 할 것.
let 외에도 변수를 선언하는 예약어로 const와 var가 있다.
const는 상수(constant)를 줄인말이다. 상수란 변하지 않고 같은 값을 가지는 수라고 한다.
> const 상수 = "변하지 않음";
< undefined
> 상수 = "변해라";
< Uncaught TypeError : Assignment to constant variable.
위의 결과처럼 const는 변경할 수 없다.
var이란 variable의 줄인말이다. 예전에는 많이 사용했지만 다소 이해하기 어려운 특성이 존재하기 때문에 const와 let을 많이 사용하고 있다. 다만, 과거에 작성된 코드에서 많이 사용하므로 var의 특성은 알아야 한다.
// 전반적인 것은 let과 거의 동일하나 차이점이 두가지 있다.
> var 변수 = '선언';
< undefined
> var 변수 = '다시 선언 할 수 있다.';
< undefined
> let 변수 = '선언';
< undefined
> let 변수 = '다시 선언 할 수 있다.';
< Uncaught SyntaxError : Identifier 'variable' has already been declared
위와같이 let과 var은 재선언할때 차이를 보이고 또다른 차이점으로서
> var let = 'const';
< undefined
> let let = 'const';
< Uncaught SyntaxError : Identifier 'let' has already been declared
// let같은 경우 예약어를 변수로 쓰면 오류가 발생.
var은 자바스크립트의 예약어인 let, const, undefined, null 등등을 변수로 사용할 수 있는데 만약 이런 예약어들을 변수로 사용한다면 코드를 작성할때 많이 햇갈릴 수도 있다.
var대신 let을 쓰게된다면 위와 같은 상황을 막을 수 있다.