[javascript] 자바 스크립트에 객체가 있는지 확인

JavaScript에서 객체가 있는지 어떻게 확인합니까?

다음과 같이 작동합니다.

if (!null)
   alert("GOT HERE");

그러나 이것은 오류를 발생시킵니다 :

if (!maybeObject)
   alert("GOT HERE");

오류:

maybeObject 정의되지 않았습니다.



답변

typeof정의되지 않은 변수 에서 연산자를 안전하게 사용할 수 있습니다 .

null을 포함하여 값이 할당되면 typeof는 undefined 이외의 값을 반환합니다. typeof는 항상 문자열을 반환합니다.

따라서

if (typeof maybeObject != "undefined") {
   alert("GOT THERE");
}


답변

여기에는 많은 반 진실이 있기 때문에, 나는 좀 더 명확하게 생각했습니다.

실제로 변수가 존재하는지 정확하게 알 수 없습니다 (매 2 초마다 try-catch 블록으로 줄 바꿈하지 않는 한).

그 이유는 자바 스크립트가이 악명 높은 값을 가지고 있기 때문에 undefined변수가 정의되지 않았거나 존재하지 않는다는 의미는 아닙니다.undefined !== not defined

var a;
alert(typeof a); // undefined (declared without a value)
alert(typeof b); // undefined (not declared)

따라서 존재하는 변수와 undefined 유형을 보고 할 수없는 다른 변수가 있습니다 .

@Kevin의 오해는 null == undefined. 유형 강제에 의한 것이며, Crockford가 이런 종류의 것을 확신하지 못하는 모든 사람에게 항상 ===거짓 평등 연산자 를 사용 하여 잘못된 값을 테스트하도록 지시 하는 주된 이유 입니다. null !== undefined당신이 기대할 수있는 것을 제공합니다. 또한 foo != null변수가 아니 undefined거나 아닌지 확인하는 효과적인 방법이 될 수 있습니다 null. 물론 가독성에 도움이 될 수 있으므로 명시적일 수 있습니다.

객체가 존재하는지 확인하기 위해 질문을 제한하는 경우 typeof o == "object"배열 객체를 고려하지 않는 경우를 제외하고는 좋은 아이디어 일 수 있습니다.이 유형은 또한 object약간 혼란 스러울 수 있습니다. 그것은 typeof null또한 당신에게 object단순히 잘못된 것을 줄 것입니다.

당신이 정말로주의해야 시원 지역은 typeof, undefined, null, unknown다른 misteries 및 호스트 개체입니다. 그들은 믿을 수 없습니다. 그들은 원하는 거의 모든 더러운 일을 자유롭게 할 수 있습니다. 따라서 존재하지 않을 수도있는 기능을 사용하는 유일한 안전한 방법이므로 기능에주의하십시오. 가능하면 기능을 확인하십시오.


답변

당신이 사용할 수있는:

if (typeof objectName == 'object') {
    //do something
}


답변

두 가지 방법.

지역 변수의 typeof

typeof를 사용하여 로컬 객체를 테스트 할 수 있습니다.

if (typeof object !== "undefined") {}

글로벌 변수 창

창 개체를 검사하여 전역 개체 (전역 범위에 정의 된 개체)를 테스트 할 수 있습니다.

if (window.FormData) {}


답변

이것이 전역 객체라면 if (!window.maybeObject)


답변

“typeof”를 사용할 수 있습니다.

if(typeof maybeObject != "undefined")
    alert("GOT HERE");


답변

실은 꽤 오래 전에 열렸습니다. 그 동안 삼항 연산자의 사용법이 가장 간단한 옵션이라고 생각합니다.

maybeObject ? console.log(maybeObject.id) : ""