JQuery'de 'undefined' değeri nasıl kontrol edilir


Yanıtlar:


379

JQuery kitaplığı, belirli JavaScript işlevlerini basitleştirmek ve birleştirmek için özel olarak geliştirilmiştir.

Bununla birlikte, bir değişkeni undefineddeğere karşı kontrol etmeniz gerekirse , JavaScript'in typeofbasit, hızlı ve platformlar arası bir operatörü olduğu için herhangi bir özel yöntem icat etmeye gerek yoktur :

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

Değişkenin veya diğer değerlendirilmemiş işlenenin türünü gösteren bir dize döndürür. Kıyasla bu yöntemin en önemli avantajı, if (value === undefined) { ... }yani typeofdeğişken ise bir istisna yükseltmek asla valueyok.


12
@nahum jQuery bir JavaScript kitaplığıdır. Bu farklı bir programlama dili değil.
VisioN

9
lol omg gerçekten bu yorum? Aynı adam olduğunu biliyorum. Ama sanırım jQuery'de $ .isUndefined (Object) gibi bir çeşit yöntem olup olmadığını bilmek istiyor; ve true veya false değerini döndürür. typeof herhangi bir çerçeve olmadan sadece javascript olduğunu.
ncubica

Sorunlarımdan biri şuydu: Böyle bir şey yapıyorsanız ("#myId"), gerçekten neye ihtiyacınız olduğundan emin olun: a. typeof ("#myId")=== "undefined" b. Veya:typeof ("#myId").val() === "undefined"
Alberici

3
@Alberici dize sabitinden ("#myId")başka bir şey değildir . Her zaman tanımlanacak ve bir türü olacaktır . Şununla oluşturulmuş gerçek bir jQuery nesnesini kastediyorsanız , her zaman olarak tanımlanır (eğer jQuery doğru bağlandıysa). Kimliğine sahip bir DOM öğesinin varlığı ile değerlendirilebilirken , değerinin boş olup olmadığını kontrol edin . Bu maddelerin hiçbiri aslında bu sorunun konusuyla ilgili değildir. "string"$("#myId")"object"myIdif ($("#myId").length > 0) { ... }if ($("#myId").val()) { ... }
VisioN

1
@ user3284463 Yanıtta belirtildiği gibi, değişken yoksa basit value === undefinedbir istisna oluşturur value. Yani gerçek hayatta ne kullanacağınız tamamen size kalmış.
VisioN

26

Bu durumda bir === undefinedkarşılaştırma kullanabilirsiniz :if(val === undefined)

Bu valher zaman var olduğu için çalışır (bir işlev argümanıdır).

Bağımsız değişken olmayan rasgele bir değişkeni test etmek istiyorsanız, yani hiç tanımlanamayabilirse, var olmadığı if(typeof val === 'undefined')durumda bir istisnayı önlemek için kullanmanız gerekir val.


16

Typeof öğesinin her zaman bir dize döndürdüğünü ve değişken hiç yoksa hata üretmediğini unutmayın.

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

1
Dize karşılaştırması için, ===yerine kullanmamız gerektiğini düşünüyorum==
Sreeram 18:12

@Sreeram ikisi de karşılaştırma yapıyor, sadece farklı şekillerde ... bu iyi olacak
RGB

10

Fonksiyona cevap vermek için geç kaldığımı biliyorum ama jquery bunu yapmak için bir inşa fonksiyonu var

if(jQuery.type(val) === "undefined"){
    //Some code goes here
}

Bunun için jquery.type https://api.jquery.com/jQuery.type/ adresinin jquery API belgesine bakın .


3

Tanımlanmamış veya boş olup olmadığını kontrol etmek için stenografi tekniğini kullanabilirsiniz

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

umarım bu sana yardımcı olur



1

" typeof obj === undefined" test ettiğimde , obj tanımsız olmasına rağmen alert(typeof obj)geri dönen object. Ob, Objectgeri dönenin türü olduğu için Objectdeğil undefined.

Bu yüzden saatler süren testlerden sonra aşağıdaki tekniği seçtim.

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

İlk tekniğin neden işe yaramadığından emin değilim ama bunu kullanarak işimi yapıyorum.


0

Öğenin adlarına sahipseniz ve kimliğiniz yoksa, aşağıdaki gibi tüm metin öğelerinde (örneğin) tanımsız denetime ulaşabilir ve bunları varsayılan bir değer diyelim: 0.0 ile doldurabiliriz:

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

En iyi çözüm olduğundan emin değilim, ama iyi çalışıyor:

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);
    }
}

bunu dene ~ tüm tip denetleyicisi


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.