undefined : javascript에서는 변수가 선언 돼었으나 해당 변수에 아무런 값을 할당 시키지 않을 때 즉 초기화를 안했을 때의 상태로 undefined가 들어간다. (예시 : let hello; <-- 변수 선언은 했으나 초기화가 안됨)
또는 변수를 선언하고 인위적으로 undefined를 넣어 줄 수도 있다
(예시 : let hello = undefined;)
주의할 점은 다른 언어에서는 undefined는 변수도 선언이 안되는 상태로 정의 되나, js는 변수까지는 선언이 되는 듯하다. 그리고 값을 초기화 시켰지만 초기화 값을 지정 할 수 없어서 null로 초기화 할때가 있는 데, undefined과는 다른 데이터 타입이다.
비교연산자 "===" 또는 "=="를 쓸 때, 과연 undefined는 어떤식으로 값을 넣어야 비교연산이 되는 지 궁금했다. 좀 더 정확하게 말하면 아래 예시처럼
(x === undefined)
(x === "undefined")
둘 중 어떤게 정확한 표현인지 몰랐었기에 테스팅을 좀 해봤다.
let x = undefined;
x === undefind // true
x == undefined // true
x === "undefined" // false
x == "undefined" //false
let cave = "undefined"
cave === undefined // false
cave == undefined // false
고로 string으로 할당 된 undefined는 타입 변환도 안되었으며 undefined도 아니였다.
사실 이 부분에 대해 궁금증이 일어난 이유는 typeof를 배울 때 반환되는 값은 string으로 반환이 된다는 점이였고, 혹시 undefined도 비슷한 이유로 값을 비교 할 때 string으로 비교가 될 까라는 생각에서였다. 물론 아예 틀렸지만.
결론은 undefined는 undefined일 뿐이다.