## undefined: 궁극적인 가이드
### 개요
“undefined”는 자바스크립트에서 가장 일반적인 글로벌 변수 중 하나입니다. 그것은 값이 설정되지 않은 변수를 나타내는 특수한 키워드입니다. 이 문서에서는 undefined의 용도, 동작, 여러 가지 JavaScript 상황에서 어떻게 사용되는지에 대해 자세히 살펴보겠습니다.
### undefined의 용도
undefined는 일반적으로 다음과 같은 경우에 사용됩니다.
* 변수에 값이 할당되지 않았을 때
* 함수가 인수 없이 호출될 때
* 배열 또는 객체의 요소에 액세스했지만 존재하지 않을 때
* new 연산자로 생성된 객체의 속성에 액세스했지만 존재하지 않을 때
### undefined의 동작
JavaScript에서 undefined는 다음과 같은 특성을 갖습니다.
* 원시 값(primitive value)입니다.
* 다른 원시 값(예: null, NaN)과 동일합니다.
* typeof 연산자로 확인하면 “undefined” 문자열을 반환합니다.
* 논리 연산자에서 false로 평가됩니다.
* == 연산자를 사용하여 다른 undefined 값과 비교하면 true를 반환합니다.
* 그 어떤 것과도 동일하지 않습니다(자바스크립트에서는 NaN을 제외하고 동일성(identity)과 동등성(equality)이 동일합니다).
### JavaScript 상황에서의 undefined
undefined는 다음과 같은 JavaScript 상황에서 일반적으로 발생합니다.
* **전역 범위:** 전역 변수는 선언되지만 값이 할당되지 않은 경우 undefined로 시작합니다.
* **함수 범위:** 함수 매개변수는 인수가 제공되지 않으면 undefined로 시작합니다.
* **조건부 문:** 조건이 거짓일 때 조건부 문 내부에서 변수가 선언되면 undefined로 시작합니다.
* **배열 및 객체:** 배열 또는 객체의 요소가 존재하지 않으면 undefined로 액세스할 수 있습니다.
### 확인 방법
undefined 값이 있는지 확인하는 방법은 다음과 같습니다.
* **strict equality (===)** 연산자를 사용하여 값을 undefined와 비교합니다.
* **typeof** 연산자를 사용하여 값의 유형을 “undefined”로 확인합니다.
* **isNaN** 함수(NaN 값에 대해서만 작동)를 사용하여 값이 undefined인지 확인합니다.
### undefined의 처리
undefined 값을 처리하는 방법은 다음과 같습니다.
* **조건부 문:** 값이 undefined인지 확인하고 필요에 따라 기본값을 할당합니다.
* **null 병합 연산자 (??)**: undefined 값을 처리하고 null이 아닌 값이 있는 경우 해당 값을 반환합니다.
* **선택적 체이닝 (?.):** optional chaining을 사용하여 존재하지 않는 요소에 액세스할 때 오류를 예방합니다.
### undefined와 null의 차이점
undefined와 null은 둘 다 JavaScript에서 허용되는 값이지만 다음과 같은 주요 차이점이 있습니다.
* undefined는 선언되지만 값이 할당되지 않은 변수를 나타내는 반면, null은 명시적으로 할당된 값이 없는 것을 나타냅니다.
* undefined는 원시 값인 반면, null은 객체입니다.
* 두 값 모두 논리적인 false로 평가되지만, typeof 연산자로 확인하면 다른 결과를 반환합니다(undefined는 “undefined”, null은 “object” 반환).
### 최우수 사례
undefined를 사용할 때 다음 최우수 사례를 따르는 것이 좋습니다.
* 값이 없음을 표시하는 데만 사용합니다.
* 조건부 문이나 유효성 검사에서 신뢰할 수 있는 값으로 사용하지 않습니다.
* 필요한 경우 기본값을 할당하여 undefined 값을 방지합니다.
* undefined 값을 처리하기 위해 선택적 체이닝과 같은 현대적인 JavaScript 기법을 사용합니다.
### 결론
undefined는 JavaScript에서 값이 없음을 나타내는 중요한 키워드입니다. 이 문서에서는 undefined의 용도, 동작, 여러 가지 JavaScript 상황에서 어떻게 사용되는지 자세히 살펴보았습니다. undefined를 적절하게 사용하고 처리함으로써 강력하고 안정적인 JavaScript 애플리케이션을 개발할 수 있습니다.