>  기사  >  웹 프론트엔드  >  자바스크립트에 객체가 존재하는지 확인하는 방법

자바스크립트에 객체가 존재하는지 확인하는 방법

青灯夜游
青灯夜游원래의
2021-09-08 18:19:362756검색

판단 방법: 1. "if(!Obj)" 문을 사용합니다. 2. "if(!window.Obj)"를 사용합니다. 3. "if(!this.Obj)"를 사용합니다. typeof Obj=="정의되지 않음")"; 5. "if(Obj==정의되지 않음)" 등을 사용합니다.

자바스크립트에 객체가 존재하는지 확인하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

객체 존재 여부를 확인하는 Javascript 메서드

이제 전역 객체 myObj가 존재하는지 확인해야 합니다. 존재하지 않으면 선언하세요. 자연어로 기술된 알고리즘은 다음과 같습니다.

  if (myObj不存在){
    声明myObj;
  }

10가지 구현 방법을 공유하겠습니다.

방법 1:

  if (!myObj) {
    var myObj = { };
  }

방법 2:

var 명령 외에 다음이 있습니다. 다시 작성하면 올바른 결과를 얻을 수도 있습니다.

  if (!window.myObj) {
    myObj = { };
  }

window는 JavaScript의 최상위 개체이고 모든 전역 변수는 해당 속성입니다. 따라서 myobj가 비어 있는지 확인하는 것은 창 개체에 myobj 특성이 있는지 확인하는 것과 동일하므로 myObj가 정의되지 않아 발생하는 ReferenceError 오류를 피할 수 있습니다. 하지만 코드의 표준화 측면에서 두 번째 줄에 var를 추가하는 것이 좋습니다:

  if (!window.myObj) {
    var myObj = { };
  }

또는 다음과 같이 작성합니다:

  if (!window.myObj) {
    window.myObj = { };
  }

방법 3:

위 작성 방법의 단점은 일부 작업 환경(예: V8, Rhino)에서는 창이 최상위 개체가 아닐 수 있습니다. 따라서 다음과 같이 다시 작성하는 것이 좋습니다.

  if (!this.myObj) {
    this.myObj = { };
  }

전역 변수 수준에서 this 키워드는 항상 최상위 변수를 가리키므로 다양한 운영 환경에 독립적일 수 있습니다.

방법 4:

그러나 위의 작성 방식은 가독성이 떨어지고 this의 포인터가 변수이고 오류가 발생하기 쉬우므로 추가로 다시 작성합니다.

  var global = this;
  if (!global.myObj) {
    global.myObj = { };
  }

사용자 정의 변수 global을 사용하여 상단을 나타냅니다. -레벨 개체, 훨씬 더 명확해질 것입니다.

방법 5:

typeof 연산자를 사용하여 myObj가 정의되었는지 확인할 수도 있습니다.

  if (typeof myObj == "undefined") {
    var myObj = { };
  }

이것은 현재 JavaScript 개체가 존재하는지 확인하는 데 가장 널리 사용되는 방법입니다.

방법 6:

myObj의 값은 정의되었지만 할당되지 않은 경우 정의되지 않은 값과 동일하므로 위의 작성 방법은 단순화될 수 있습니다.

  if (myObj == undefined) {
    var myObj = { };
  }

여기서 주의해야 할 두 곳이 있습니다. 두 번째 줄 var 키워드는 누락될 수 없습니다. 그렇지 않으면 ReferenceError가 발생합니다. 둘째, 여기서 비교되는 문자열 "undefined"가 아니라 undefed의 데이터 유형이 비교되기 때문에 작은따옴표나 큰따옴표를 undefed에 추가할 수 없습니다.

방법 7:

위의 작성 방법은 "정확한 비교"의 경우에도 여전히 유효합니다(===):

  if (myObj === undefined) {
    var myObj = { };
  }

방법 8:

자바스크립트의 언어 설계에 따르면 정의되지 않음 == null, 따라서 myObj가 null과 같은지 비교하는 것도 올바른 결과를 얻을 수 있습니다.

  if (myObj == null) {
    var myObj = { };
  }

그러나 실행 결과는 정확하지만 의미상으로는 이 판단 방법이 잘못되었으므로 피해야 합니다. null은 null 값이 할당된 빈 개체, 즉 이 개체가 실제로 값을 갖는 개체를 참조하고, undefined는 존재하지 않거나 값이 할당되지 않은 개체를 참조하기 때문입니다. 따라서 여기서는 "비교 연산자"(==)만 사용할 수 있습니다. 여기서 "정확한 비교 연산자"(===)를 사용하면 오류가 발생합니다.

방법 9:

in 연산자를 사용하여 myObj가 최상위 개체의 속성인지 확인할 수도 있습니다.

  if (!('myObj' in window)) {
    window.myObj = { };
  }

방법 10:

마지막으로 hasOwnProperty 메서드를 사용하여 myObj가 최상위 개체인지 확인합니다. 최상위 개체 속성의 속성:

  if (!this.hasOwnProperty('myObj')) {
    this.myObj = { };
  }

Summary

1. 개체 존재 여부만 확인하는 경우 다섯 번째 작성 방법을 사용하는 것이 좋습니다.

2. 객체 존재 여부 외에도 객체에 null 값이 있는지 확인해야 하는 경우 첫 번째 작성 방법을 사용하는 것이 좋습니다.

3. 특별한 사정이 없는 한 모든 변수는 var 명령어를 사용하여 선언해야 합니다.

4. 크로스 플랫폼을 위해서는 최상위 객체를 표현하기 위해 창을 사용하지 않는 것이 좋습니다.

5. Javascript 언어에서는 null과 정의되지 않음이 쉽게 혼동됩니다. 둘 다 관련될 수 있는 경우 "정확한 비교" 연산자(===)를 사용하는 것이 좋습니다.

【추천 학습: javascript 고급 튜토리얼

위 내용은 자바스크립트에 객체가 존재하는지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.