undefined
덤프버전 :
분류
동명의 해체된 오버워치 프로게임단에 대한 내용은 UNDEFINED(프로게임단) 문서 참고하십시오.
관련 문서: 컴퓨터/표현
1. 개요[편집]
JavaScript언어에서 '아직 할당하지 않은 값'을 표현하기 위해 사용하는 값. null과는 사용 방식이 약간 다른데, null이 아예 '일부러 비워 둔 값'을 의미하는 것이라면, undefined는 아직 변수 또는 프로퍼티가 할당되지 않았음을 의미한다.
2. undefined가 발생하는 경우[편집]
자바스크립트에서는 정말 자주 볼 수 있는데, 객체에서 없는 프로퍼티를 꺼내려고 하거나[*
const obj = {};
obj.a // undefined
], 함수를 호출할 때, 값이 들어오지 않은 매개변수를 사용하려 한다거나[* function f(a, b) {
console.log(a);
console.log(b);
}
f(1) // a는 1이 나오지만, b는 undefined로 출력됨
], 아직 값이 할당되지 않은 변수를 사용하려 할 때[* let a;
a // undefined
][1] , 배열의 범위를 넘어서는 값을 가져오려 할 때[* [1, 2, 3][3] // undefined
][2] , 그리고 함수가 아무것도 반환하지 않을 때[* function a () {}
a() // undefined
]도 undefined
를 만날 수 있다!이런 특징으로 인해 디버깅이 상당히 어려워 지는데,
undefined
는 (객체가 아니기에)속성도 가지지 않고, (함수도 아니기에) 호출할 수도 없다. 그래서 코드 중간에서 오타 등으로 인해 존재하지 않는 프로퍼티를 꺼냈을 때, 원하는 값 대신 undefined
가 나오게 되고, 이 값을 나중에 사용하는 부분에서 Uncaught TypeError: Cannot read property '...' of undefined
또는 Uncaught TypeError: ... is not a function
등의 오류를 맞닥트리게 되며, 버그의 원인과 발견 지점이 멀어지게 되고, 결국엔 디버깅 난이도를 높이게 된다. 이 문서의 내용 중 전체 또는 일부는 2023-11-06 14:23:57에 나무위키 undefined 문서에서 가져왔습니다.