판단 방법: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!