
쉽게 생각하면, 어떤 값을 담기 위한 상자나 그릇이라고 비유할 수 있다.
var
var name = "고요한";
var name = "한요고";
- 함수 스코프
- 변수 선언부가 호이스팅 된다. (값에는 적용되지 않는다.)
- 같은 이름의 변수를 여러번 선언 가능하다.
var는 메모리에 지정한 값의 주소를 끌어오기 때문에 중첩하여 작성하여도 오류가 발생하지 않는다.
순서에 상관없이 위쪽으로 끌어 올린다.
호이스팅 : 우선순위가 높아지는 것
letlet name = "고요한";
let name = "한요고"; → 불가능 why? 변수의 이름이 같을 수 없다.
let name2 = "한요고"; → 가능
- 블럭 스코프
- 같은 이름의 변수를 선언할 수 없다.
- 재할당 가능하다.
상수란 변하지 않는 값이다.
constconst name= "상수";
선언시 반드시 같이 할당 해야한다.
const name; 값을 할당하지 않으면 Error가 뜬다.
→ Uncaught SyntaxError: Missing initializer in const declaration 가 나타나게 된다.
- 블럭 스코프
- 선언과 동시에 할당해야한다.
- 재할당이 불가능하다 (할당한 값을 변경할 수 없다)
let 과 const 비교letlet userName = "abc"
userName = "aaa" → let은 처음에 입력한 값을 바꿀 수 있다
constconst userName2 = "bbb" → const는 처음에 입력한 값을 바꿀 수 없다.
userName2 = "aaa" → 에러가 발생한다.