번역 작업 진행중입니다.

전역 undefined 속성은 undefined 원시 값을 나타내며, 자바스크립트의 원시 자료형 중 하나입니다.

Property attributes of undefined
Writable no
Enumerable no
Configurable no

구문

undefined

설명

undefined 는 전역 객체의 속성입니다. 즉, 전역 스코프에서의 변수입니다. undefined 의 초기 값은 undefined 원시 값입니다.

최신 브라우저에서 undefined는 ECMAScript 5 명세에 따라 설정 불가, 쓰기 불가한 속성입니다. 그렇지 않더라도 덮어쓰는건 피하는게 좋습니다.

값을 할당하지 않은 변수는 undefined 자료형입니다. 또한 메서드와 선언도 평가할 변수가 값을 할당받지 않은 경우에 undefined를 반환합니다. 함수는 값을 명시적으로 반환하지 않으면 undefined를 반환합니다.

undefined예약어가 아니기 때문에 전역 스코프 외에서 식별자(변수 이름)로 사용할 수 있습니다. 그러나 유지보수와 디버깅 시 어려움을 낳을 수 있으므로 반드시 피해야 합니다.

// 하면 안되는 일의 예시

// logs "foo string"
(function() { var undefined = 'foo'; console.log(undefined, typeof undefined); })();

// logs "foo string"
(function(undefined) { console.log(undefined, typeof undefined); })('foo');

 

예제

일치 연산과 undefined

당신은 undefined 를 사용할 수 있고, 변수가 값을 가지는지를 알아내기 위해 엄격한 균등(===)과 비균등(!==) 연산자를 사용할 수 있다. 다음의 코드에서, 변수 x 는 정의되지 않았으며, if 문을 수행하면 true 이다.

var x;
if (x === undefined) {
   // 이 문이 실행됨
}
else {
   // 이 문이 실행되지 않음
}

비고: 여기서는 보통의 균등 연산자(==) 보다는 엄격한 균등 연산자(===) 를 사용해야 한다. 엄격 균등이 아닐 때  x == undefined 는 x 가 null 인지도 체크하기 때문이다. null 은 undefined 와 동일하지 않다. 상세한 내용을 위해 비교 연산자들 을 참고하자.

typeof 연산자와 undefined

대신, typeof 를 사용될 수 있다:

var x;
if (typeof x === 'undefined') {
   // 이 문이 실행됨
}

typeof 를 사용하는 이유 중 하나는 변수가 선언되지 않았어도 에러를 던지지 않기 때문이다. 

// x 는 이전에 선언되지 않음
if (typeof x === 'undefined') { // 에러 없이 true 로 평가
   // 이 문이 실행됨
}

if(x === undefined){ // ReferenceError 를 던짐

}

그러나, 이런 종류의 테크닉은 피해야 한다. JavaScript 는 정적 스코프 언어이다. 그래서 감싸고있는 context 안에서 그것이 선언되었는지를 보고 선언된 변수를 읽을 수 있는지 알고 있다. 유일한 예외는 전역 스코프인데, 전역 스코프는 전역 객체로 묶여있다. 그래서 전역 context 내의 변수의 존재를 체크하는 것은 전역 객체 의 프로퍼티의 존재를 체크하는 것으로 할 수 있다. (예를 들어, in 연산자를 사용).

void 연산자와 undefined

void 연산자는 제 3의 대안이다.

var x;
if (x === void 0) {
   // 이 문이 실행됨
}

// y 는 이전에 선언된 적 없음
if (y === void 0) {
   // ReferenceError (`typeof` 에 대한) 를 던짐
}

명세서

명서 상태 설명
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'undefined' in that specification.
Standard  
ECMAScript 5.1 (ECMA-262)
The definition of 'undefined' in that specification.
Standard  
ECMAScript 1st Edition (ECMA-262)
The definition of 'undefined' in that specification.
Standard 최초 정의. JavaScript 1.3 에서 시행됨.

브라우저 호환성

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

문서 태그 및 공헌자

이 페이지의 공헌자: urty5656, nicesh
최종 변경: urty5656,