변수
변수란 변할 수 있는 값이다.
var
var name = "김수민";
- 함수 스코프
❌ 함수 A 안에서 선언 > 함수 B 안에서는 사용할 수 없다.
⭕ 함수 A 안에서 선언 > 함수 A 안에서만 사용할 수 있다.
a.k.a 함수 안에서 지역 변수로 쓰인다.
⭕ 블럭 A 안에서 선언 > 블럭 B 안에서도 사용할 수 있다.
⭕ 블럭 A 안에서 선언 > 블럭 A 안에서도 사용할 수 있다.
- 같은 이름의 변수를 여러번 선언할 수 있다.
var는 메모리에 지정한 값의 주소를 끌어오기 때문에 중첩하여 작성하여도 오류가 발생하지 않는다.
- 변수의 선언부가 호이스팅 된다. ❗ 값에는 적용되지 않는다.
호이스팅: 우선순위가 높아지는 것
let
let name = "김수민";
- 블럭 스코프
❌ 블럭 A 안에서 선언 > 블럭 B 안에서는 사용할 수 없다.
⭕ 블럭 A 안에서 선언 > 블럭 A 안에서만 사용할 수 있다.
a.k.a 블럭 안에서 지역 변수로 쓰인다.
상수
상수란 변하지 않는 값이다.
const
const name= "상수";
선언시 반드시 같이 할당 해야한다.
const name; ❌
위와 같이 할당하지 않았을때에는 Uncaught SyntaxError: Missing initializer in const declaration가 나타나게 된다.
- 블럭 스코프
❌ 블럭 A 안에서 선언 > 블럭 B 안에서는 사용할 수 없다.
⭕ 블럭 A 안에서 선언 > 블럭 A 안에서만 사용할 수 있다.
- 할당한 값을 변경할 수 없다.