Pertanyaan Pesan JSLint: Variabel yang tidak digunakan


apa yang bisa saya lakukan jika JSLint mengeluh tentang "i" menjadi variabel yang tidak digunakan dalam skenario seperti ini:

var items = "<option selected></option>";
$.each(data, function (i, item) {
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});

(i, item) adalah urutan parameter yang diperlukan dan saya hanya menggunakan "item".

Apakah ada solusi lain selain menoleransi variabel yang tidak digunakan atau menulis ulang $ .each untuk menggunakan indeks, kedua solusi yang saya lebih suka untuk tidak melakukannya?

Terima kasih sebelumnya.

Pembaruan: Saya menghargai semua saran tetapi kode ini hanyalah contoh untuk menunjukkan apa yang saya maksud dan saya tertarik untuk melihat solusi umum, jika ada. Terima kasih.


76
2017-07-05 13:43


asal


Jawaban:


Mencoba:

var items = "<option selected></option>";
/*jslint unparam: true*/
$.each(data, function (i, item) {
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});
/*jslint unparam: false*/  // so that you still get warnings from other functions

76
2017-07-05 15:16



Saya pikir ini harus baru di: http://www.jslint.com/help.html

"JSLint memperkenalkan kata cadangan baru: abaikan"

Jadi hal di atas menjadi:

$.each(data, function (ignore, item) {

i => abaikan ... terlalu mudah. Sisa kode dapat tetap sama, browser senang dan JSLint senang


Jawaban sebelumnya (salah):

Untuk menenangkan JsLint dan browser yang perlu saya gunakan:

function (d, i) {
        if (undefined !== win.undefined) {
            undefined(d);
        }
        return (i);
}

Peramban macet pada "tidak terdefinisi (d)" karena tidak terdefinisi sebagai fungsi. Jadi, "undefined! == win.undefined" melompati baris jika kita berada di browser.


23
2017-07-08 14:38



Anda bisa melakukan ini:

var items = "<option selected></option>";
$.each(data, function () {
    var item = arguments[1];
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});

... tapi itu mungkin lebih buruk jika kamu bertanya padaku.


1
2017-07-05 13:48



Cara yang mungkin untuk menyingkirkan peringatan dengan cara yang cukup mendokumentasi diri adalah dengan menyebabkan variabel yang tidak digunakan untuk digunakan, seperti ini:

// Utility function in project scope:
function unusedVariables(/* Put all your deliberately unused variables here */) {
    // pass
}

// And then, later:
var items = "<option selected></option>";
$.each(data, function (i, item) {
    unusedVariables(i); //< This is the new and magical line
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});

Tentu saja, sekarang Anda bisa masuk ke situasi di mana Anda menandai variabel sebagai tidak terpakai, dan Anda masih menggunakannya di suatu tempat. Juga, metode ini mungkin terlalu verbose, tergantung pada konteksnya.

Metode ini memiliki kelebihan yang tepat. Menggunakan /*jslint unparam*/ mungkin terlalu luas.


1
2017-07-05 15:55



Bagaimana kalau menggunakan void untuk menyatakan bahwa Anda sengaja tidak menggunakan variabel?

$.each(data, function (i, item, any, other, unused, vars) {
  void(i, any, other, unused, vars);
  items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});

Ini juga berguna dalam fungsi abstrak yang diharapkan akan ditimpa, tetapi di mana Anda ingin menunjukkan tanda tangan, atau mengolok-olok, di mana Anda mengabaikan argumen, tetapi ingin mencocokkan tanda tangan fungsi yang diejek.


1
2017-09-13 23:59



Saya mengganti nama "i" sebagai "tidak terpakai". Masih meninggalkan kesalahan jelas, tapi saya melihatnya di daftar dan tahu saya sudah "memeriksa" kesalahan itu dan saya tidak keberatan dengan itu.


1
2017-11-14 06:38



Dalam kasus khusus ini mengubah suatu array / objek http://api.jquery.com/jquery.map/ (atau http://api.jquery.com/map/ ?) adalah pilihan.

var items = "<option selected></option>" + $.map(data, function (item) { 
    return "<option value='" + item.Value + "'>" + item.Text + "</option>";
}).get().join('');

0
2018-01-30 07:10



Jika fungsi memiliki lebih dari satu parameter yang tidak digunakan, Anda dapat menggunakan "mengabaikan" seperti ini :

function (ignoreFoo, ignoreBar, baz) {
}

Itu harus dimulai dengan kata "abaikan" (abaikan, ignoreFoo, ignoreBar, ...).


0
2018-04-25 21:08