jQuery에서 '정의되지 않은'값을 확인하는 방법


답변:


379

JQuery 라이브러리는 특정 JavaScript 기능을 단순화하고 통합하기 위해 특별히 개발되었습니다.

그러나 undefined값에 대해 변수를 확인 해야하는 경우 JavaScript에는 typeof단순하고 빠르며 크로스 플랫폼 인 연산자 가 있기 때문에 특별한 방법을 발명 할 필요가 없습니다 .

if (typeof value === "undefined") {
    // ...
}

변수 또는 평가되지 않은 다른 피연산자의 유형을 나타내는 문자열을 반환합니다. 비교 이러한 방법의 주요 장점은, if (value === undefined) { ... }typeof변수 경우 경우에 예외를 발생 결코 value존재하지 않는다.


12
@nahum jQuery는 JavaScript 라이브러리입니다. 이것은 다른 프로그래밍 언어가 아닙니다.
VisioN

9
lol omg 정말 댓글을 달고 있습니까? 나는 같은 사람이라는 것을 알고 있습니다. 그러나 그는 $ .isUndefined (Object)와 같은 jQuery에 어떤 종류의 메소드가 있는지 알고 싶어한다고 생각합니다. true 또는 false 값을 반환합니다. typeof는 프레임 워크가없는 자바 스크립트입니다.
ncubica

내 문제 중 하나는 : 당신이 이와 같은 일을하고 있다면, 당신이 ("#myId")정말로 필요한 것을 확인하십시오 : a. typeof ("#myId")=== "undefined" 비. 또는 :typeof ("#myId").val() === "undefined"
Alberici

3
@Alberici ("#myId")문자열 상수입니다. 항상 정의되며 유형은 "string"입니다. 로 작성된 실제 jQuery 객체 를 의미하는 경우 $("#myId")항상 "object"(jQuery가 올바르게 연결된 경우) 로 정의됩니다 . ID가있는 DOM 요소의 존재 여부 myId는로 평가할 수 있으며 if ($("#myId").length > 0) { ... }값이 비어 있지 않은지 확인하면됩니다 if ($("#myId").val()) { ... }. 이 조항들 중 어느 것도 실제로이 질문의 주제와 관련이 없습니다.
VisioN

1
@ user3284463 답변에서 언급했듯이 변수가 존재하지 않으면 simple value === undefined이 예외를 발생 value시킵니다. 따라서 실제 생활에서 무엇을 사용해야할지는 전적으로 귀하에게 달려 있습니다.
VisioN

26

이 경우 === undefined비교를 사용할 수 있습니다 .if(val === undefined)

이것은 val항상 존재 하기 때문에 작동 합니다 (함수 인수입니다).

인수가 아닌 임의의 변수를 테스트하려는 경우 (예 : 전혀 정의 되지 않은 if(typeof val === 'undefined')경우) 예외가 val존재하지 않는 경우를 피하기 위해 사용해야 합니다.


16

typeof는 항상 문자열을 반환하며 변수가 존재하지 않으면 오류를 생성하지 않습니다.

function A(val){
  if(typeof(val)  === "undefined") 
    //do this
  else
   //do this
}

1
문자열 비교를 위해, ===대신에 우리가 사용해야한다고 생각합니다==
Sreeram

@Sreeram 그들은 서로 다른 방식으로 비교하고 있습니다 ... 이것은 잘 작동합니다
RGB


3

속기 기술을 사용하여 정의되지 않았는지 또는 널인지 확인할 수 있습니다.

 function A(val)
 {
   if(val || "") 
   //do this
 else
 //do this
 }

이것이 당신을 도울 수 있기를 바랍니다



1

" typeof obj === undefined"를 테스트 할 때 obj가 정의되지 않은 경우에도을 alert(typeof obj)반환 object합니다. OBJ는 유형이기 때문에 Object그것의 반환 Object하지 undefined.

그래서 몇 시간의 테스트 끝에 아래 기술을 선택했습니다.

if(document.getElementById(obj) !== null){
//do...
}else{
//do...
}

왜 첫 번째 기술이 효과가 없는지 잘 모르겠지만 이것을 사용하여 작업을 완료했습니다.


0

요소 이름이 있고 id가 아닌 경우 아래처럼 모든 텍스트 요소에 대해 정의되지 않은 검사를 수행하고 기본값 0.0으로 채울 수 있습니다.

var aFieldsCannotBeNull=['ast_chkacc_bwr','ast_savacc_bwr'];
 jQuery.each(aFieldsCannotBeNull,function(nShowIndex,sShowKey) {
   var $_oField = jQuery("input[name='"+sShowKey+"']");
   if($_oField.val().trim().length === 0){
       $_oField.val('0.0')
    }
  })

0

나는 그것이 최선의 해결책인지 확실하지 않지만 잘 작동합니다.

if($someObject['length']!=0){
    //do someting
}

0
function isValue(value, def, is_return) {
    if ( $.type(value) == 'null'
        || $.type(value) == 'undefined'
        || $.trim(value) == ''
        || ($.type(value) == 'number' && !$.isNumeric(value))
        || ($.type(value) == 'array' && value.length == 0)
        || ($.type(value) == 'object' && $.isEmptyObject(value)) ) {
        return ($.type(def) != 'undefined') ? def : false;
    } else {
        return ($.type(is_return) == 'boolean' && is_return === true ? value : true);
    }
}

이것을 시도하십시오 ~ 모든 유형 검사기


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.