[1] undefined
- 선언 후에 아무런 값이 할당되지 않은 경우
- 원시 타입
- var로 선언한 타입은 선언시 undefined로 초기화가 된다.
[2] null
- 선언 후에 값이 들어있지 않는 경우
- 리터럴 값
- typeof undefined // undefined
- typeof null // object
- 자바스크립트는 대문자를 구분해서 Null이나 NULL과는 다르다.
- 객체이고 참조 자료형
- undefined == null // true
- typeof null // 'object'
- typeof undefined // 'undefined'
- null === undefined // false
- null == undefined // true
- null === null // true
- null == null // true
- !null // true
- isNaN(1 + null) // false
- isNaN(1 + undefined) // true
[3] let
- let로 선언한 변수는 호이스팅이 되지 않아 let변수를 호출하게 되면 ReferenceError 발생
스크립트 선언: Script
함수 내에서 스크립트 사용된 변수 재할당 : Script
함수 내에서 선언 : Local
블록, 반복문 : Block
재선언 : 불가능
재할당 : 가능
[4] const
- 값이 변하지 않는 변수일 때 사용
- const aaa = [] , const aaa = {} 일떄 배열이나 객체 자체가 변하면 에러지만 배열이나 객체 내부에 요소가 들어가고 삭제되는 것에 대해서는 크게 문제가 발생하지 않는다.
재선언 : 불가능
재할당 : 불가능
[5] var
- var로 선언한 변수는 호이스팅 되어 변수 공간이 생성, 단 값이 들어가지 않으면 undefined
스크립트 선언: Global
함수 내에서 스크립트 사용된 변수 재할당 : Global
함수 내에서 선언 : Local
블록, 반복문 : Global
재선언 : 가능
재할당 : 가능