JS berikut:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
Hasil:
test.js: line 5, col 3, '$' is not defined.
Ketika dilapisi menggunakan JSHint 0,5.5. Ada ide?
javascript
jquery
lint
jshint
Allyl Isocyanate
sumber
sumber
jquery.js
ke halaman Anda?$
tidak terdefinisi.Jawaban:
Jika Anda menggunakan versi JSHint yang relatif baru, pendekatan yang umumnya disukai adalah membuat file .jshintrc di root proyek Anda, dan masukkan konfigurasi ini di dalamnya:
Ini menyatakan kepada JSHint bahwa $ adalah variabel global, dan false menunjukkan bahwa ia tidak boleh diganti.
File .jshintrc tidak didukung di versi JSHint yang benar-benar lama (seperti v0.5.5 seperti pertanyaan asli pada 2012). Jika Anda tidak dapat atau tidak ingin menggunakan file .jshintrc, Anda dapat menambahkan ini di bagian atas file skrip:
Ada juga opsi jshint "jquery" steno seperti yang terlihat pada halaman opsi JSHint ..
sumber
/*global $:false, jQuery:false */
./* global ... */
? Saya biasanya mengimpor skrip dengan semua fungsi saya ke sayamain
sehingga sulit untuk mendefinisikan satu per satu ...Anda juga dapat menambahkan dua baris ke .jshintrc Anda
Ini memberitahu jshint bahwa ada dua variabel global.
sumber
Yang perlu Anda lakukan adalah mengatur
"jquery": true
di.jshintrc
.Per referensi opsi JSHint :
sumber
Berikut ini adalah daftar kecil untuk dimasukkan ke .jshintrc Anda.
Saya akan menambahkan daftar ini pada waktu berlalu.
sumber
Jika Anda menggunakan editor IntelliJ seperti WebStorm, PyCharm, RubyMine, atau IntelliJ IDEA:
Di bagian Lingkungan pada File / Pengaturan / JavaScript / Kualitas Alat / JSHint, klik pada kotak centang jQuery.
sumber
Alih-alih merekomendasikan "matikan JSHint global" yang biasa, saya sarankan menggunakan pola modul untuk memperbaiki masalah ini. Itu membuat kode Anda "terkandung" dan memberikan peningkatan kinerja (berdasarkan 10 hal yang saya pelajari tentang Jquery karya Paul Irish ).
Saya cenderung menulis pola modul saya seperti ini:
Anda bisa mendapatkan manfaat kinerja lainnya ini (dijelaskan lebih lanjut di sini ):
window
deklarasi objek yang diteruskan akan diperkecil juga. misalnyawindow.alert()
menjadim.alert()
.window
objek.window
properti atau metode, mencegah traversal mahal dari rantai lingkup misalnyawindow.alert()
(lebih cepat) versusalert()
(lebih lambat) kinerja.sumber
"}(window))
"dalam contoh Anda - Saya punya masalah dengan jQuery dan Highcharts). Saya belum menemukan cara untuk mematikannya selain mendefinisikan global untuk file, yang kemudian mengalahkan tujuannyabrowser: true
memberi tahu JSHint bahwa Anda mengharapkan lingkungan browser (di manawindow
sudah ditentukan).Jika Anda menggunakan editor IntelliJ, di bawah
Anda dapat mengetikkan apa saja, misalnya
console:false
, dan itu akan menambahkannya ke daftar (.jshintrc) juga - sebagai global.sumber
Untuk memperbaiki kesalahan ini saat menggunakan implementasi JSHint online :
sumber
Anda mungkin ingin melakukan hal berikut,
untuk menghindari itu melempar kesalahan linting.
sumber