## **[제목]**
### 소개
**undefined**은 JavaScript에서 변수 또는 속성이 할당되지 않은 상태를 나타내는 특별한 값입니다. 값이 설정되기 전에 변수를 참조하면 **undefined**가 반환됩니다. 또한 객체나 배열에 존재하지 않는 속성이나 요소에 액세스하면 **undefined**가 반환됩니다.
### **undefined**의 특성
**undefined**에는 다음과 같은 특성이 있습니다.
– **기본값이 아닌 특별한 값입니다.** 할당되지 않은 변수의 기본값이 **undefined**인 것이 아니라, 별도의 값입니다.
– **자바스크립트에서 유일한 프리미티브 값입니다.** 모든 다른 프리미티브 값(숫자, 문자열, 부울)은 리터럴 또는 연산자를 통해 생성될 수 있지만, **undefined**는 명시적으로 생성될 수 없습니다.
– **엄격하게 **null****과 다릅니다.** **null**은 값이 없음을 나타내는 특별한 값인 반면, **undefined**는 값이 할당되지 않은 상태를 나타냅니다.
### **undefined**와 **null**의 상호 작용
**undefined**와 **null**은 다른 값이지만 특정 상황에서는 서로 대치될 수 있습니다. 예를 들어, 객체 속성이나 배열 요소가 존재하지 않을 때 다음과 같이 **undefined**와 **null**을 교환하여 사용할 수 있습니다.
“`javascript
// undefined 사용
if (obj.property === undefined) {
// 속성이 존재하지 않음
}
// null 사용
if (obj.property === null) {
// 속성이 존재하지 않음
}
“`
그러나 **undefined**와 **null**은 다음과 같은 경우 항상 동일하게 작동하지 않습니다.
– **엄격한 비교(===):** `undefined === null`은 **false**를 반환합니다.
– **비엄격한 비교(==):** `undefined == null`은 **true**를 반환합니다.
– **코어서(coercion):** **undefined**는 **false**로 강제 변환되지만, **null**은 **true**로 강제 변환됩니다.
### **undefined** 처리
**undefined**를 처리하는 방법은 다음과 같습니다.
– **조건문 사용:** 변수나 속성이 할당되었는지 확인하려면 조건문을 사용하세요.
– **할당 기본값:** 변수에 할당할 기본값을 제공하여 **undefined**를 피하세요.
– **hasOwnProperty() 메서드:** 객체에서 속성이 존재하는지 확인하려면 `hasOwnProperty()` 메서드를 사용하세요.
### 예제
**undefined**를 처리하는 몇 가지 예제를 살펴봅시다.
“`javascript
// 변수 할당
let x;
// x가 할당되지 않음
console.log(x); // undefined
// 기본값 할당
let y = 10;
// y가 할당됨
console.log(y); // 10
// 객체 속성 확인
const obj = {
name: ‘John’,
};
// age 속성이 존재하지 않음
console.log(obj.age); // undefined
// hasOwnProperty() 메서드 사용
if (obj.hasOwnProperty(‘age’)) {
// age 속성이 존재함
} else {
// age 속성이 존재하지 않음
}
“`
### 결론
**undefined**는 JavaScript에서 값이 할당되지 않은 상태를 나타내는 특별한 값입니다. **undefined**와 **null**은 유사하지만 동일한 값은 아닙니다. **undefined**를 처리할 때는 조건문, 할당 기본값, `hasOwnProperty()` 메서드 등 여러 가지 방법을 사용할 수 있습니다. **undefined**를 올바르게 이해하고 처리하면 JavaScript 코드의 로버스트성과 안정성을 향상시킬 수 있습니다.