Pertanyaan Masalah JSLint dengan 'jendela' sebagai variabel global


Jadi saya menggunakan JSLint untuk mencoba dan mendeteksi kesalahan. Saya mengubah beberapa opsi yang tidak saya sukai, tetapi saya tidak melihat cara untuk mengaktifkannya window variabel global. Nah, ada opsi Yahoo Widget, tapi itu berlebihan.

Apa masalahnya dengan menggunakan 'jendela', mengapa JSLint mengatakan itu menyebabkan kesalahan?


75
2017-09-10 08:31


asal


Jawaban:


/*jslint browser: true*/

Adalah solusi yang tepat untuk ini.

2017-07-07: Dokumentasi JSLint sekarang mengatakan:

browser... Itu tidak menyediakan diri atau jendela; Anda harus meminta alias ini dari objek global yang ditakuti sendiri.

dan

The /global/ direktif hanya dapat digunakan ketika Asumsikan opsi browser dipilih.

Jadi Anda sekarang harus menggunakan:

/* jslint browser */
/* global window */

134
2017-09-12 13:41



Buat komentar di skrip Anda seperti itu:

/*global window */

... your script goes here

Komentar ini akan memberi tahu JSLint itu window didefinisikan di tempat lain.

Lihat: http://www.JSLint.com/lint.html,

JSLint juga mengakui a /* global */ komentar yang dapat menunjukkan kepada JSLint bahwa variabel yang digunakan dalam file ini didefinisikan dalam file lain. Komentar dapat berisi daftar nama yang dipisahkan koma. Setiap nama opsional dapat diikuti oleh titik dua dan benar atau salah, benar menunjukkan bahwa variabel dapat ditugaskan oleh file ini, dan salah menunjukkan bahwa penugasan tidak diizinkan yang merupakan default.

Bila Anda ingin jendela menjadi global secara default tanpa harus menerapkan komentar ke skrip Anda, Anda dapat menambahkan predef:["window"] ke objek literal parameter di dalam JSLINT fungsi lokal Anda jslint.js mengajukan.

BTW, saya menggunakan predef:["$","window"] untuk memiliki jQuery global juga.

Memperbarui:

Jawaban ini benar pada tahun 2009. Mulai sekarang Anda harus menggunakan larutan /*jslint browser: true*/ disediakan oleh Matt Clarkson.


76
2017-09-10 08:37



Untuk memberi tahu JSLint bahwa Anda mengenali window sebagai objek global, tambahkan arahan ini di bagian atas file Anda:

/*global window*/

Saya dulu bisa menggunakan:

/*jslint browser: true */

tetapi ini sepertinya tidak lagi berhasil. Sekarang, menurut Bantuan JSHint mengenai browser pilihan:

Itu tidak memasok self atau window; Anda harus meminta alias ini dari objek global yang ditakuti sendiri.

Saya tidak yakin kapan perubahan itu dibuat, tetapi saya terhenti untuk sementara waktu.


4
2017-11-17 04:54



Saya harus menggunakan kedua jawaban di atas pada kode ini untuk menyingkirkan semua peringatan:

/*jslint browser:true*/
/*global window*/
// eventBoiler v0.1.1 by @ryanpcmcquen
// https://github.com/ryanpcmcquen/eventBoiler
(function (win, doc) {
    'use strict';
    win.eventBoiler = function (selector, typeOfEvent, func) {
        doc.querySelector(selector).addEventListener(typeOfEvent, func);
    };
    win.eventBoiler.all = function (selectors, typeOfEvent, func) {
        Array.prototype.slice.call(doc.querySelectorAll(selectors)).map(function (i) {
            i.addEventListener(typeOfEvent, func);
        });
    };
}(window, document));

Jadi bagi saya, ini adalah solusi ketika menggunakan Situs web JSLint:

/*jslint browser:true*/
/*global window*/

3
2017-10-29 15:27



Jika Anda tidak ingin menentukan ini di setiap file Anda dapat mengaturnya secara global di Anda eslintrc file konfigurasi seperti ini:

"globals": {
    "window": true,
}

1
2017-10-02 11:47