## 이해하기 쉬운 가이드: `undefined` 이해하기
### 개요
`undefined`는 자바스크립트에서 변수에 값이 할당되지 않았을 때 나타나는 특별한 값입니다. 변수가 선언되었지만 초기화되지 않은 경우에도 나타납니다.
### `undefined`의 특성
* **데이터 유형:** `undefined`는 자바스크립트에서 프리미티브 데이터 유형입니다.
* **값:** `undefined`의 값은 `undefined`입니다.
* **비교:** `undefined`는 다른 모든 값과 `!==`을 사용하여 비교할 수 있습니다.
* **조건문:** `undefined`는 조건문에서 `false`로 평가됩니다.
### `undefined` 발생 시나리오
`undefined`는 다음과 같은 경우 발생할 수 있습니다.
* **변수 선언 후 초기화되지 않음:** `let x;`와 같이 변수를 선언한 경우
* **함수 매개변수에 인수가 전달되지 않음:** 함수 매개변수가 **선택적**이 아닌 경우
* **객체 속성에 값이 할당되지 않음:** `const obj = { name: ‘John’ }; obj.age;`와 같이 객체 속성을 참조하지만 할당하지 않은 경우
* **함수가 `null` 또는 `undefined`를 반환하는 경우:** 함수가 명시적으로 `return null;` 또는 `return undefined;`를 호출하는 경우
### `undefined` 처리
`undefined`를 처리하는 일반적인 방법은 다음과 같습니다.
* **조건문 사용:** `if (x === undefined) { … }`와 같이 조건문을 사용하여 `undefined`를 확인할 수 있습니다.
* **삼항 연산자 사용:** `x ? x : ‘기본값’`와 같이 삼항 연산자를 사용하여 `undefined`인 경우 기본값을 제공할 수 있습니다.
* **기본값 설정:** 함수 매개변수에 기본값을 명시적으로 설정하여 인수가 전달되지 않을 때 `undefined`가 되지 않도록 할 수 있습니다.
### `undefined` 및 `null`의 차이점
`undefined`와 `null`은 자바스크립트에서 자주 혼동되는 두 개념입니다. 그러나 이 둘은 몇 가지 주요 차이점이 있습니다.
* **값:** `undefined`는 값이 할당되지 않은 변수를 나타내는 반면, `null`은 명시적으로 설정된 값입니다.
* **타입:** `undefined`는 프리미티브 타입이고 `null`은 객체 타입입니다.
* **엄격한 비교:** `===` 연산자를 사용하여 `undefined`와 `null`을 비교하면 `false`가 반환되지만, 느슨한 비교 연산자(`==`)를 사용하면 `true`가 반환됩니다.
### 결론
`undefined`는 자바스크립트 코드 이해에 필수적인 개념입니다. `undefined`가 발생하는 상황을 이해하고 이를 적절히 처리함으로써 버그가 없는 안정적인 코드를 작성할 수 있습니다.