Pertanyaan Apakah ada fungsi standar untuk memeriksa variabel null, undefined, atau kosong dalam JavaScript?


Adakah fungsi JavaScript universal yang memeriksa bahwa variabel memiliki nilai dan memastikan bahwa tidak undefined atau null? Saya punya kode ini, tapi saya tidak yakin apakah itu mencakup semua kasus:

function isEmpty(val){
    return (val === undefined || val == null || val.length <= 0) ? true : false;
}

1601
2018-04-01 15:14


asal


Jawaban:


Anda hanya dapat memeriksa apakah variabel mempunyai sebuah truthy nilai atau tidak. Itu berarti

if( value ) {
}

akan dievaluasi true jika value aku s tidak:

  • batal
  • tidak terdefinisi
  • NaN
  • string kosong ("")
  • 0
  • Salah

Daftar di atas mewakili semua kemungkinan falsy nilai dalam ECMA- / Javascript. Temukan di spesifikasi pada ToBoolean bagian.

Selanjutnya, jika Anda tidak melakukannya tahu apakah suatu variabel ada (itu berarti, jika itu ada dideklarasikan) Anda harus memeriksa dengan typeof operator. Contohnya

if( typeof foo !== 'undefined' ) {
    // foo could get resolved and it's defined
}

Jika Anda dapat yakin bahwa a variabel dinyatakan setidaknya, Anda harus langsung memeriksa apakah ia memiliki truthy nilai seperti yang ditunjukkan di atas.

Bacaan lebih lanjut: http://typeofnan.blogspot.com/2011/01/typeof-is-fast.html


3296
2018-04-01 15:17



Metode verbose untuk memeriksa apakah nilai tidak terdefinisi atau null adalah:

return value === undefined || value === null;

Anda juga bisa menggunakan == Operator tetapi ini mengharapkan satu untuk tahu semua aturannya:

return value == null; // also returns true if value is undefined

150
2018-04-01 15:20



function isEmpty(value){
  return (value == null || value.length === 0);
}

Ini akan mengembalikan true untuk

undefined  // Because undefined == null

null

[]

""

dan fungsi argumen nol sejak fungsi itu length adalah jumlah parameter yang dideklarasikan yang dibutuhkan.

Untuk tidak mengizinkan kategori yang terakhir, Anda mungkin hanya perlu memeriksa string kosong

function isEmpty(value){
  return (value == null || value === '');
}

55
2018-04-01 15:19



Saya tahu ini adalah pertanyaan lama, tetapi ini adalah pemeriksaan paling aman dan saya belum melihatnya diposting di sini persis seperti itu:

if (typeof value != 'undefined' && value) {
    //deal with value'
};

Ini akan mencakup kasus di mana nilai tidak pernah didefinisikan, dan juga salah satu dari ini:

  • batal
  • tidak terdefinisi (nilai tidak terdefinisi tidak sama dengan parameter yang tidak pernah didefinisikan)
  • 0
  • "" (string kosong)
  • Salah
  • NaN

P.S. tidak perlu untuk kesetaraan yang ketat dalam nilai typeof! = 'tidak terdefinisi'


26
2017-11-10 16:13



Jawaban pertama dengan penilaian terbaik adalah salah. Jika nilai tidak terdefinisi maka akan membuang pengecualian di browser modern. Anda harus menggunakan:

if (typeof(value) !== "undefined" && value)

atau

if (typeof value  !== "undefined" && value)

25
2018-03-19 13:23



Anda mungkin menemukan fungsi berikut ini berguna:

function typeOf(obj) {
  return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase();
}

Atau di ES7 (komentar jika ada perbaikan lebih lanjut)

function typeOf(obj) {
  const { toString } = Object.prototype;
  const stringified = obj::toString();
  const type = stringified.split(' ')[1].slice(0, -1);

  return type.toLowerCase();
}

Hasil:

typeOf(); //undefined
typeOf(null); //null
typeOf(NaN); //number
typeOf(5); //number
typeOf({}); //object
typeOf([]); //array
typeOf(''); //string
typeOf(function () {}); //function
typeOf(/a/) //regexp
typeOf(new Date()) //date

"Perhatikan bahwa operator bind (: :) bukan bagian dari ES2016 (ES7) atau edisi ECMAScript edisi terbaru sama sekali. Saat ini ada proposal tahap 0 (jerami) untuk diperkenalkan ke bahasa." - Simon Kjellberg. penulis ingin menambahkan dukungannya untuk proposal yang indah ini untuk menerima kenaikan kerajaan.


23
2018-02-12 10:32



! periksa string kosong (""), null, undefined, false dan angka 0 dan NaN. Katakanlah, jika string kosong var name = "" kemudian console.log(!name) kembali true.

function isEmpty(val){
  return !val;
}

fungsi ini akan mengembalikan true jika val aku s kosong, null, tidak terdefinisi, salah, angka 0 atau NaN.


16
2018-01-23 06:56