JavaScript에서는 변수가 비어 있는지 또는 어떤 유형인지 확인하기 위해 typeof 및 instanceof를 사용하는 경우가 많습니다. 하지만 여전히 차이점이 있습니다.
유형
typeof는 피연산자 앞에 배치되는 단항 연산이며 피연산자는 모든 유형이 될 수 있습니다.
반환 값은 피연산자의 유형을 설명하는 문자열입니다. typeof는 일반적으로 다음 결과만 반환할 수 있습니다.
숫자, 부울, 문자열, 함수, 객체, 정의되지 않음. if(a)를 사용하는 대신 if(typeof a!="undefine"){alert("ok")}와 같이 변수가 존재하는지 여부를 확인하기 위해 typeof를 사용할 수 있습니다. ), Array 및 Null과 같은 특수 개체의 경우 typeof는 항상 개체를 반환합니다. 이것이 typeof의 제한 사항입니다.
인스턴스
인스턴스: 인스턴스, 예시
b?alert("true"):alert("false")의 인스턴스입니다. //a는 b의 인스턴스입니까? 참:거짓
instanceof는 변수가 객체의 인스턴스인지 확인하는 데 사용됩니다. 예를 들어 var a=new Array();alert(astanceofArray)
는 true를 반환하고, Alert(ainstanceofObject)는 또한 true를 반환합니다. 이는 Array가
객체의 하위 클래스이기 때문입니다. 또 다른 예: function test(){};var a=new test();alert(instanceof test)는
instanceof 얘기가 나와서 말인데, 함수의 인수라는 문제를 하나 더 추가해야 합니다. 우리는 모두 인수가
배열이라고 생각할 수 있지만, instanceof를 사용하여 테스트해 보면 인수가 배열이 아니라는 사실을 알 수 있습니다. 매우 비슷해 보이지만 배열 객체입니다.
또한:
테스트 var a=new Array();if(객체 인스턴스) Alert('Y');else Alert('N');
'Y'를 받았습니다
하지만 if (객체 창 인스턴스) 경고('Y');else 경고('N');
'N'을 받았습니다
그래서 여기서 instanceof로 테스트한 객체는 dom 모델 객체가 아닌 js 구문의 객체를 참조합니다.
typeof를 사용하면 약간의 차이가 있습니다
alert(typeof(window))는 객체를 얻습니다