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.