: 메모리에 값을 계속 바꾸어 가면서 저장할 수 있는 공간
변수에 이름을 붙이고 원하는 값을 대입하면 필요한 곳에서 변수명을 호출하여 저장된 값을 사용할 수 있다.
변수명 명명 규칙
- 의미 있는 이름을 작성 (대충 a, b 이런식으로 짓는것을 지양)
- 대, 소문자 구분
- 특수 문자는 _만 사용 가능.(단, 첫글자 제외)
- 숫자도 사용 가능 (단, 첫글자 제외)
- 카멜 표기법으로 작성
  ex) user name -> userName	1순위 : const (JS는 특정 요소를 선택해서 사용하는 경우가 많기에 const 상수에 고정시켜둠)
	2순위 : let
	3순위 : var함수 레벨 스코프
: 함수 내에서 선언된 변수는 함수 내에서만 유효하며, 함수 외부에서는 참조할 수 없다
즉, 함수 내부에서 선언한 변수는 지역 변수이며, 함수 외부에서 선언한 변수는 모두 전역 변수이다
블록 레벨 스코프
: 모든 코드 블록 내에서 선언된 변수는 코드블록 내에서만 유효하며, 코드블록 외부에서는 참조할 수 없다.
즉, 코드블록 내부에서 선언한 변수는 지역변수이다.
자바스크립트는 변수 선언 시 별도의 자료형을 지정하지 않음
-> 변수에 대입되는 값(리터럴)에 의해서 자료형이 결정됨. 
    - string (문자열)
    - number (숫자) -> 정수/실수 모두 포함
    - boolean (논리값) -> treu(참), false(거짓)
    - object (객체) -> 배열(array), 자바스크립트 객체 {k:v, k:v ..}
    - function (함수)
    - undefined (정의되지 않은 변수) -> 변수가 선언만 되고, 값이 대입되지 않음
    (참고)
    - null (타입보단 값(리터럴)의 개념)
	: 참조하는 것이 없음
	-> ex) document.getElementById("오타")
    (가장 흔한 경우)
	-> id가 일치하는 요소가 없어서 참조할 수 없다
1) 배열(Array) : 여러 값이 나열되어 있는 것의 묶음
2) JS 객체
: 값을 K:V (map) 형식으로 여러개 저장하는 형태
-> { K:V, K:V, :K:V .. }K(key) : 값을 구분하는 이름(변수명과 유사)
V(value) : K에 대응되는 값 (변수에 대입되는 값과 유사)
객체에 존재하는 값 하나씩 얻어오기
	방법 1 : 변수명['key']
	방법 2 : 변수명.key