Pertanyaan Kesulitan dengan tidak terdefinisi! == tidak terdefinisi


Saya mencoba untuk memproses fungsi lengkap dalam panggilan ajax. Jika nilainya tidak terdefinisi, saya ingin melemparkan var sebagai string kosong. Kalau tidak, saya ingin menangkap nilai ke dalam array string.

Masalahnya adalah saya memasukkan pernyataan if, bahkan ketika mencatat nilai variabel dalam pertanyaan mengembalikan sebagai tidak terdefinisi. Apa yang kulewatkan di sini?

completefunc: function (xData, Status) {
      $(xData.responseXML).SPFilterNode("z:row").each(function() {
        if(typeof $(this).attr("ows_Products") !== undefined) {
          console.log($(this).attr("ows_Products"));
          arr = $(this).attr("ows_Products").split(',');
        }
        else {
          arr = "";
        }
      });
    }

5
2018-05-14 16:42


asal


Jawaban:


typeof mengembalikan nilai string, jadi Anda harus membandingkannya dengan "undefined" sebagai string. Misalnya.,

if(typeof $(this).attr("ows_Products") !== "undefined") { ... }

Edit - info lebih lanjut:

Jika Anda memeriksa Halaman MDN untuk typeof, Anda akan melihat ini:

Operator typeof mengembalikan string yang menunjukkan jenis operand yang tidak dievaluasi.

Ini sangat berbeda dengan mengembalikan Type itu sendiri (yang dalam JavaScript mungkin akan menjadi sesuatu seperti mengembalikan fungsi konstruktor seperti String, Array, dll.). Karena itu, saat menggunakan typeof, Anda akan selalu membandingkan dengan string seperti "object", "string", "undefined", dll.


16
2018-05-14 16:44



if($(this).attr("own_Products")){
       arr = $(this).attr("ows_Products").split(',');
}else{
       arr=""
}

0
2018-05-14 16:59