undefined
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
시도해보기
값
undefined
의 원시 값입니다.
Property attributes of undefined | |
---|---|
쓰기 가능 | 불가능 |
열거 가능 | 불가능 |
설정 가능 | 불가능 |
설명
undefined
는 전역 객체의 속성입니다. 즉, 전역 범위에서의 변수입니다.
최신 브라우저에서 undefined
는 설정 불가, 쓰기 불가한 속성입니다. 그렇지 않더라도 덮어쓰는건 피하는게 좋습니다.
값을 할당하지 않은 변수는 undefined
자료형입니다. 메서드나 선언도 평가할 변수가 값을 할당받지 않은 경우에 undefined
를 반환합니다. 함수는 값을 명시적으로 반환
하지 않으면 undefined
를 반환합니다.
참고 :
전역 범위 이외의 모든 범위에서 식별자 (변수 이름)로 undefined
를 사용할 수 있지만(undefined
는 예약어가 아니기 때문에), 그렇게 하는 것은 매우 나쁜 생각입니다. 코드를 유지보수하고 디버깅하기 어렵게 만듭니다.
// DON'T DO THIS
(() => {
const undefined = "foo";
console.log(undefined, typeof undefined); // foo string
})();
((undefined) => {
console.log(undefined, typeof undefined); // foo string
})("foo");
예제
엄격한 일치 연산과 undefined
undefined
와 엄격한 일치, 불일치 연산자를 사용해 변수에 값이 있는지 확인할 수 있습니다. 다음 코드에서 변수 x
는 초기화되지 않았으며, if
문은 참으로 평가됩니다.
let x;
if (x === undefined) {
// 이 문이 실행됨
} else {
// 이 문이 실행되지 않음
}
참고::
x == undefined
는x
가null
일 때도 참이기 때문에, 엄격한 동등 연산자(표준 동등 연산자와 반대로)를 사용해야 합니다. 반면에, 엄격한 동등 연산자는 그렇지 않습니다. 이것은null
이undefined
하고 동일하지 않기 때문입니다.자세한 내용은 Equality comparison and sameness 문서를 확인하세요.
typeof
연산자와 undefined
위의 예제 대신 typeof
를 사용할 수도 있습니다.
let x;
if (typeof x === "undefined") {
// 이 문이 실행됨
}
typeof
를 사용하는 한 가지 이유는 변수가 선언되지 않은 경우 오류를 발생시키지 않기 때문입니다.
// x를 선언한 적 없음
// 오류 없이 true로 평가
if (typeof x === "undefined") {
// 이 문이 실행됨
}
// ReferenceError 발생
if (x === undefined) {
}
그러나 다른 방법도 있습니다. JavaScript는 정적 범위를 가지는 언어이므로, 변수의 선언 여부는 현재 컨텍스트의 코드를 읽어 알 수 있습니다.
전역 범위는 전역 객체에 바인딩되므로, 전역 컨텍스트에서 변수의 존재 유무는 in
연산자를 전역 객체 대상으로 실행해 알 수 있습니다. 예를들어,
if ("x" in window) {
// x가 전역으로 정의된 경우 이 문이 실행됨
}
void
연산자와 undefined
void
연산자는 세번째 대안입니다.
let x;
if (x === void 0) {
// 이 문이 실행됨
}
// y를 이전에 선언하지 않음
if (y === void 0) {
// throws Uncaught ReferenceError: y is not defined
}
명세
Specification |
---|
ECMAScript Language Specification # sec-undefined |
브라우저 호환성
BCD tables only load in the browser