Cara memeriksa nilai 'tidak terdefinisi' di jQuery

Jawaban:

379

Pustaka JQuery dikembangkan secara khusus untuk menyederhanakan dan menyatukan fungsi JavaScript tertentu.

Namun jika Anda perlu memeriksa variabel terhadap undefinednilai, tidak perlu menemukan metode khusus, karena JavaScript memiliki typeofoperator, yang sederhana, cepat, dan lintas platform:

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

Ini mengembalikan string yang menunjukkan jenis variabel atau operan yang tidak dievaluasi lainnya. Keuntungan utama dari metode ini, dibandingkan dengan if (value === undefined) { ... }, adalah bahwa typeoftidak akan pernah meningkatkan pengecualian jika variabel valuetidak ada.

Penglihatan
sumber
12
@nahum jQuery adalah perpustakaan JavaScript. Ini bukan bahasa pemrograman yang berbeda.
VisioN
9
lol omg apakah Anda benar-benar berkomentar ini ?? Saya tahu orang yang sama. Tapi saya rasa dia ingin tahu apakah ada beberapa metode di jQuery seperti $ .isUndefined (Object); dan mengembalikan nilai benar atau salah. typeof hanya javascript tanpa kerangka kerja.
ncubica
Salah satu masalah saya adalah: jika Anda melakukan sesuatu seperti ini ("#myId"), pastikan apa yang benar-benar Anda butuhkan: a. typeof ("#myId")=== "undefined" b. Atau:typeof ("#myId").val() === "undefined"
Alberici
3
@ Alberici ("#myId")tidak lain adalah string konstan. Itu akan selalu didefinisikan dan memiliki tipe "string". Jika Anda maksud objek jQuery aktual dibuat dengan $("#myId"), itu akan selalu didefinisikan sebagai "object"(jika Anda memiliki jQuery ditautkan dengan benar). Keberadaan elemen DOM dengan ID myIddapat dinilai dengan if ($("#myId").length > 0) { ... }, sementara memeriksa apakah nilainya tidak kosong dapat dilakukan if ($("#myId").val()) { ... }. Tidak satu pun dari klausa ini yang benar-benar berhubungan dengan topik pertanyaan ini.
VisioN
1
@ user3284463 Seperti yang disebutkan dalam jawaban, sederhana value === undefinedakan memunculkan pengecualian jika valuevariabel tidak ada. Jadi sepenuhnya terserah Anda apa yang harus digunakan dalam kehidupan nyata.
VisioN
26

Dalam hal ini Anda dapat menggunakan === undefinedperbandingan:if(val === undefined)

Ini berfungsi karena valselalu ada (ini adalah argumen fungsi).

Jika Anda ingin menguji variabel arbitrer yang bukan merupakan argumen, yaitu mungkin tidak didefinisikan sama sekali, Anda harus menggunakan if(typeof val === 'undefined')untuk menghindari pengecualian jika valtidak ada.

Pencuri
sumber
16

Perhatikan bahwa typeof selalu mengembalikan string, dan tidak menghasilkan kesalahan jika variabel tidak ada sama sekali.

function A(val){
  if(typeof(val)  === "undefined") 
    //do this
  else
   //do this
}
Jignesh Rajput
sumber
1
Untuk perbandingan string, saya pikir kita perlu menggunakan ===bukannya==
Sreeram
@ Saler mereka berdua melakukan perbandingan, hanya dengan cara yang berbeda ... ini akan berfungsi dengan baik
RGB
10

Saya tahu saya terlambat untuk menjawab fungsi tetapi jquery memiliki fungsi build untuk melakukan ini

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

Lihat dokumen API jquery tentang jquery.type https://api.jquery.com/jQuery.type/ untuk hal yang sama.

Arpita
sumber
3

Anda dapat menggunakan teknik steno untuk memeriksa apakah itu tidak terdefinisi atau nol

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

Semoga ini bisa membantu Anda

Rohidas Kadam
sumber
2
if (value === undefined) {
    // ...
}
sandeep kumar
sumber
1

ketika saya menguji " typeof obj === undefined", alert(typeof obj)pengembalian object, meskipun obj tidak terdefinisi. Karena obj adalah jenis Objectpengembaliannya Object, bukan undefined.

Jadi setelah berjam-jam pengujian saya memilih teknik di bawah ini.

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

Saya tidak yakin mengapa teknik pertama tidak berhasil. Tapi saya menyelesaikan pekerjaan saya menggunakan ini.

Sridhar K
sumber
0

Jika Anda memiliki nama elemen dan bukan id, kami dapat mencapai pemeriksaan yang tidak ditentukan pada semua elemen teks (misalnya) seperti di bawah ini dan mengisinya dengan nilai default misalkan 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')
    }
  })
Yoosaf Abdulla
sumber
0

Saya tidak yakin itu adalah solusi terbaik, tetapi berfungsi dengan baik:

if($someObject['length']!=0){
    //do someting
}
Esdu
sumber
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);
    }
}

coba ini ~ semua jenis pemeriksa

MGK
sumber
0

Anda dapat menggunakan dua arah 1) if ( val == null ) 2)if ( val === undefine )

Suhag Lapani88
sumber