## undefined: 의미, 사용법 및 예시
### undefined의 의미
컴퓨터 프로그래밍에서 `undefined`는 변수, 상수 또는 함수가 선언되었지만 아직 값이 할당되지 않은 상태를 나타냅니다. 다른 말로 하면, `undefined`는 해당 식별자가 어떤 값도 가지고 있지 않음을 의미합니다.
### undefined의 사용법
`undefined`는 주로 다음과 같은 경우에 사용됩니다.
* 변수나 상수가 선언되었지만 아직 값이 할당되지 않은 경우.
* 함수가 아직 호출되지 않은 경우.
* 객체의 속성이 아직 정의되지 않은 경우.
JavaScript와 같은 일부 프로그래밍 언어에서는 `undefined`를 명시적으로 선언할 수 있습니다. 예를 들어, 다음 코드는 `x`라는 변수를 `undefined`로 선언합니다.
“`javascript
var x = undefined;
“`
다른 프로그래밍 언어에서는 `undefined`가 자동으로 할당됩니다. 예를 들어, Java에서는 선언된 변수에 값을 할당하지 않으면 기본적으로 `undefined`로 설정됩니다.
### undefined와 null의 차이점
`undefined`와 `null`은 종종 혼동되지만 두 개념은 다릅니다.
* **undefined:** 선언된 식별자가 값을 가지고 있지 않은 경우를 나타냅니다.
* **null:** 식별자에 명시적으로 **null** 값이 할당된 경우를 나타냅니다.
다음은 `undefined`와 `null`의 차이점에 대한 몇 가지 예입니다.
| 경우 | undefined | null |
|—|—|—|
| 선언된 변수 | 변수가 선언되었지만 값이 할당되지 않은 경우 | 변수에 **null** 값이 할당된 경우 |
| 함수 호출 | 함수가 아직 호출되지 않은 경우 | 함수에 **null** 값이 전달된 경우 |
| 객체 속성 | 객체의 속성이 아직 정의되지 않은 경우 | 객체의 속성에 **null** 값이 할당된 경우 |
### undefined를 사용할 때 주의 사항
`undefined`를 사용할 때는 다음 사항에 유의하는 것이 중요합니다.
* `undefined` 자체는 **typeof** 연산자를 사용하면 “undefined”로 평가됩니다.
* `undefined`는 다른 모든 값(숫자, 문자열, 불리언)과 같지 않습니다.
* `undefined`는 **==** 연산자를 사용하여 다른 값과 비교하면 **false**를 반환합니다.
### 실제 예제
다음은 `undefined`가 실제로 사용되는 몇 가지 예입니다.
* **JavaScript:**
“`javascript
function calculateArea(length, width) {
if (length === undefined) {
throw new Error(“Length cannot be undefined”);
}
if (width === undefined) {
throw new Error(“Width cannot be undefined”);
}
return length * width;
}
“`
이 함수는 `length`와 `width`라는 두 인수를 가져오며, 이 인수는 면적을 계산하는 데 사용됩니다. 인수가 `undefined`인 경우 함수는 오류를 throw합니다.
* **Java:**
“`java
public class Person {
private String name;
private int age;
public Person() {
this.name = “Unknown”;
this.age = 0;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
“`
이 Java 클래스는 `name`과 `age`라는 두 개의 속성을 갖고 있습니다. `Person` 생성자는 기본값으로 `name`을 “Unknown”으로, `age`를 0으로 설정합니다. 두 번째 생성자는 `name`과 `age` 인수를 가져와 속성을 초기화합니다. `getName()`과 `getAge()` 메서드는 해당 속성의 값을 반환합니다. `Person` 객체를 생성하고 생성자에 인수를 제공하지 않으면 `name` 속성에는 “Unknown” 값이 할당되고 `age` 속성에는 0 값이 할당됩니다.
### 결론
`undefined`는 컴퓨터 프로그래밍에서 변수, 상수 또는 함수가 선언되었지만 아직 값이 할당되지 않은 상태를 나타내는 중요한 개념입니다. `undefined`와 `null`의 차이점을 이해하고 이 개념을 올바르게 사용하면 탄탄하고 오류가 없는 코드를 작성할 수 있습니다.