let vs var 그리고 hoisting
hoisting: 어디에 선언했나 상관없이 맨위로 끌어올려주는 것.
var로 선언할시 어디에 선언했든 출력이 됨.
반면에 let으로 선언할시 먼저 선언을 하고 출력이 된다.
또한 var는 블럭을 무시하고 어디에서든 불러올 수 있다. 유연하지만 값이 잘못 할당될 수 있음.
let(Mutable) vs const(immutable)
let의 경우 한번 선언되고 수정될 수 있음.
const로 선언될 시 한번 선언된 후 변경할 수 없음.
data type
1. number
- infinity = 1 / 0
- negativeInfinity = -1 / 0
- not a number = 'string' / number -> NaN
*bigInt라는 변수가 추가되었음 숫자 마지막에 별(*) 기호를 붙이면 됨.
2. string
3. boolean
4. null, undefined
- null -> 명확하게 비어있는 값
- undefined -> 선언은 되었지만 비어있는 것, 값이 할당 될지 안될지 모름
5. symbol
- 동일한 string으로 작성해도 다른 심볼로 간주됨.
const symbol1 = Symbol('id');
const symbol2 = Symbol('id');
symbol1 === symbol2 -> false
true로 만들고 싶으면 for를 이용해서 선언
const symbol1 = Symbol.for('id');
const symbol2 = Symbol.for('id');
symbol1 === symbol2 -> true
symbol은 바로 출력하면 에러가 발생
반드시 symbol.description으로 출력해야 함
6. object
- const text = { a: 'text', b: number };
text는 다른 object로 할당이 불가하지만 안에 있는 a, b는 다른 변수로 할당이 가능 함