자바 스크립트에 객체가 있는지 확인
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
}
이것이 전역 객체라면 if (!window.maybeObject)
두 가지 방법.
지역 변수의 typeof
typeof를 사용하여 로컬 객체를 테스트 할 수 있습니다.
if (typeof object !== "undefined") {}
글로벌 변수 창
창 개체를 검사하여 전역 개체 (전역 범위에 정의 된 개체)를 테스트 할 수 있습니다.
if (window.FormData) {}
"typeof"를 사용할 수 있습니다.
if(typeof maybeObject != "undefined")
alert("GOT HERE");
난 그냥 작업을 수행하는 데 사용 if(maybeObject)
내 자바 스크립트에서 null을 체크한다.
if(maybeObject){
alert("GOT HERE");
}
따라서 maybeObject
-가 객체 인 경우에만 경고가 표시됩니다. 내 사이트에 예가 있습니다.
https://sites.google.com/site/javaerrorsandsolutions/home/javascript-dynamic-checkboxes
위의 typeOf 예제를 방금 테스트했지만 아무도 효과가 없었으므로 대신 이것을 사용했습니다.
btnAdd = document.getElementById("elementNotLoadedYet");
if (btnAdd) {
btnAdd.textContent = "Some text here";
} else {
alert("not detected!");
}
객체 / 변수의 존재를 확인하는 것 외에도 "최악의 경우"출력을 제공하거나 적어도 경고로 트랩하여 눈에 띄지 않게 할 수 있습니다.
점검하고, 대안을 제공하며, 오류를 포착하는 기능의 예.
function fillForm(obj) {
try {
var output;
output = (typeof obj !== 'undefined') ? obj : '';
return (output);
}
catch (err) {
// If an error was thrown, sent it as an alert
// to help with debugging any problems
alert(err.toString());
// If the obj doesn't exist or it's empty
// I want to fill the form with ""
return ('');
} // catch End
} // fillForm End
내가 전달 한 객체가 x, xm, xm [z] 일 수 있고 xm이 존재하지 않으면 typeof xm [z] 오류가 발생하기 때문에 이것을 만들었습니다.
도움이 되길 바랍니다. (BTW, 저는 JS 초보자입니다)
!
연산자를 두 번 사용할 수 있습니다 !!
.
if (!!maybeObject)
alert("maybeObject exists");
또는 한 번 !
존재하지 않는 경우 :
if (!maybeObject)
alert("maybeObject does not exist");
나를 위해 이것은 DOM 객체에서 작동했습니다.
if(document.getElementsById('IDname').length != 0 ){
alert("object exist");
}
실은 꽤 오래 전에 열렸습니다. 한편 삼항 연산자의 사용법이 가장 간단한 옵션이라고 생각합니다.
maybeObject ? console.log(maybeObject.id) : ""
if (n === Object(n)) {
// code
}
그것의 존재에 대해서만 관심이 있다면 (선언 되었습니까?), 승인 된 답변으로 충분합니다.
if (typeof maybeObject != "undefined") {
alert("GOT THERE");
}
실제 가치에 관심이 있다면 다음을 추가해야합니다.
if (typeof maybeObject != "undefined" && maybeObject != null ) {
alert("GOT THERE");
}
같이 typeof( null ) == "object"
예 : bar = { x: 1, y: 2, z: null}
typeof( bar.z ) == "object"
typeof( bar.not_present ) == "undefined"
이 방법은 당신은 어느 쪽도 없다는 것을 확인 null
하거나 undefined
, 이후 typeof
값이 존재 플러스하지 않는 경우 오류를하지 않는 &&
단락, 당신은 런타임 오류가 발생하지 않습니다.
개인적으로 어딘가에 도우미 fn을 추가하는 것이 좋습니다 (그리고 신뢰하지 마십시오 typeof()
).
function exists(data){
data !== null && data !== undefined
}
if( exists( maybeObject ) ){
alert("Got here!");
}
if (maybeObject !== undefined)
alert("Got here!");
div alignmnt 탭 패널을 사용하여 텍스트 상자 값을 한 프레임으로 설정하여 인라인 프레임으로 설정하십시오. 우선, 값을 설정하기 전에 다음 코드를 사용하거나 사용하지 않는 선택된 탭 패널 프레임을 확인해야합니다.
자바 스크립트 코드 :
/////////////////////////////////////////
<script>
function set_TextID()
{
try
{
if(!parent.frames["entry"])
{
alert("Frame object not found");
}
else
{
var setText=document.getElementById("formx").value;
parent.frames["entry"].document.getElementById("form_id").value=setText;
}
if(!parent.frames["education"])
{
alert("Frame object not found");
}
else
{
var setText=document.getElementById("formx").value;
parent.frames["education"].document.getElementById("form_id").value=setText;
}
if(!parent.frames["contact"])
{
alert("Frame object not found");
}
else
{
var setText=document.getElementById("formx").value;
parent.frames["contact"].document.getElementById("form_id").value=setText;
}
}catch(exception){}
}
</script>
0과 null은 암시 적 포인터입니다. 화면에 산술, 비교 또는 '0'을 인쇄하지 않으면 실제로 입력 할 필요가 없습니다. 암시 적입니다. 암시 적으로. 같은 이유로 Typeof도 필요하지 않습니다. 손목 시계.
if (obj) console.log ( "exists");
에 대한 요청을 보지 못했거나 요청이 포함되지 않았습니다. 질문에 맞지 않는 추가 콘텐츠를 좋아하는 한. 간단하게하자.
가장 쉬운 것 같아요
if(myobject_or_myvar)
alert('it exists');
else
alert("what the hell you'll talking about");
또는 내 독점적 인 exist () 메서드를 대신 사용하여 불가능한 것으로 간주되는 작업을 수행 할 수 있습니다. 즉 :
상황이 좋아 : exists("blabla")
, 심지어 : exists("foreignObject.guessedProperty.guessNext.propertyNeeded")
도 가능합니다 ...
참고 URL : https://stackoverflow.com/questions/4186906/check-if-object-exists-in-javascript
'Programing' 카테고리의 다른 글
사전에 사전을 추가 하시겠습니까? (0) | 2020.03.19 |
---|---|
C에서 >>> = 연산자는 무엇입니까? (0) | 2020.03.19 |
고정 페이지 헤더가 인 페이지 앵커와 겹칩니다. (0) | 2020.03.19 |
jQuery를 사용하여 DropDownList에 옵션을 어떻게 추가합니까? (0) | 2020.03.19 |
시간 모듈로 경과 시간 측정 (0) | 2020.03.19 |