JSLint: tanımlanmadan önce kullanıldı


95

Merhaba 3 javascript dosyam var.

  • jquery.js
  • Utility.js
  • file1.js

File1.js'de var

jQuery.noConflict()
jQuery(document).ready(function($) { 
 // ....
});

Tanımlanmadan önce 'jQuery' kullanıldı hatası alıyorum. ve 'belge' tanımlanmadan önce kullanıldı.

Bu uyarıdan nasıl güvenle kurtulabilirim?

Eğer yaparsam

var document = document || {}; 

o zaman benim utility.js'de kullanılıyorsa, IE'de boş ve firefox'ta tamam olur.

Bunun için en iyi çözüm nedir?


JS Lint'in olası kopyası : 'kısayol' tanımlanmadan önce kullanıldı . Ayrıca, seçeneklerde Tarayıcının seçili olduğundan emin olun .
Andy E

@ChunpingWang SO'da hala aktif olduğunuzu ve bu sorunun kabul edilen bir cevabının eksik olduğunu fark ettiniz. Bu cevaplardan herhangi birinde, onları kabul edilebilir kılmak için gerekli olan bir şey eksik mi? Quentin'in cevabı sorulduğu gibi sorunu çözecek gibi görünüyor. Sorunuzu yanıtlamak için ek bilgi gerekiyor mu?
ruffin

Yanıtlar:


169

Gönderen dokümantasyon

JSLint, JSLint'e bu dosyada kullanılan değişkenlerin başka dosyalarda tanımlandığını gösterebilen bir / * global * / yönergesini de tanır. Yorum, virgülle ayrılmış bir isim listesi içerebilir. Her adın ardından isteğe bağlı olarak iki nokta üst üste ve doğru ya da yanlış gelebilir; bu, değişkenin bu dosya tarafından atanabileceğini belirtir ve false, atamaya izin verilmediğini gösterir (varsayılandır). Yönerge, işlev kapsamına uyar.

Bazı globaller sizin için önceden tanımlanabilir. Document ve addEventListener gibi web tarayıcıları tarafından sağlanan standart genel özellikleri önceden tanımlamak için Bir tarayıcı (tarayıcı) varsay seçeneğini seçin.

Misal:

/*jslint browser: true*/
/*global $, jQuery*/

25
not: daha önce boşluk koyamazsınız, globalbu yüzden /* global var, var2 */işe yaramaz. /*global var, var2*/eserler
radixhound

4
Çoğul eşdeğerdir ve aynı zamanda çalışır: /*globals */ve ayrıca değişkenlerin listesini ekleyerek daha mantıklı
Robert Koritnik

2
Yani JSLint'in tüm dosyalarınızda eksik olan bir şeyden şikayet etmesine çözüm, tüm dosyalarınıza bir satır eklemektir ... Bu korkunç bir tavsiye.
Cerin

@Cerin - Hayır, JSLint'in tanımını bulamadığı bir değişkeni kullandığından şikayet etmesine yönelik çözüm, ona onu başka bir dosyada tanımladığınızı söylemektir (örneğin, değişken adında bir yazım hatası yapmak yerine) bu daha sonra programınızı bozacaktır).
Quentin

1
@Quentin, Evet ve bunun için düzeltmeniz her dosyada "jQuery'den bahsetmenizi" gerektiriyor. Hiçbir fayda sağlamayan bir şey için muazzam bir çalışma. JSLint'te bu kontrolü basitçe devre dışı bırakabilirsiniz.
Cerin

30

Quentin'in dediği gibi, bir /*global*/direktif var.

İşte bir örnek (bunu dosyanın en üstüne koyun):

/*global var1,var2,var3,var4,var5*/

İlk genel ifadenin ile aynı satırda olduğundan emin olun /*, yoksa kesilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.