JSLint hata 'için bir gövde bir kaplanmalı if' ne anlama geliyor?
Benim bir JavaScript dosyası JSLint kullandım. Hata attı:
for( ind in evtListeners ) {
Satır 41 de sorun karakter 9: bir vücut olmalıdır filtre ifadesi istenmeyen bir sarılmış prototip özellikleri.
Bu ne anlama geliyor?
CEVAP
Öncelikleaslafor in
bir döngü bir dizi sıralamak için kullanın. Asla. Kullanımı iyi for(var i = 0; i<arr.length; i )
eski.
Bu şudur arkasındaki nedeni: JavaScript her nesne özel bir alan prototype
çağırdı. Eklediğiniz her şey bu alana o türün her nesne üzerinde erişilebilir olacak. Tüm diziler sıfır süzer serin bir yeni fonksiyonu filter_0
denen istediğinizi varsayalım.
Array.prototype.filter_0 = function() {
var res = [];
for (var i = 0; i < this.length; i ) {
if (this[i] != 0) {
res.push(this[i]);
}
}
return res;
};
console.log([0, 5, 0, 3, 0, 1, 0].filter_0());
//prints [5,3,1]
Bu nesneleri genişletmek ve yeni yöntemler eklemek için standart bir yoldur. Kütüphaneler bir sürü bu.
Ancak, hadi for in
şimdi nasıl işlediğine bir bakalım:
var listeners = ["a", "b", "c"];
for (o in listeners) {
console.log(o);
}
//prints:
// 0
// 1
// 2
// filter_0
Görüyor musun? Aniden filter_0 başka bir dizi dizini olduğunu düşünüyor. Tabii ki, gerçekten sayısal bir dizin değil, ama for in
nesne alanları, yalnızca sayısal endeksleri arasında sıralar. Şimdi her sayısal dizin ile numaralandırma ediyoruzvefilter_0
. Ama filter_0
belirli bir dizi nesnenin bir alan değil, her dizi nesnesi artık bu özellik var.
Neyse ki, tüm nesneler var hasOwnProperty
yöntem, kontrol ederse bu alan, gerçekten ait olduğu nesnenin kendisi ya da eğer sadece miras gelen prototip zinciri ve böylece ait tüm nesnelerin türü.
for (o in listeners) {
if (listeners.hasOwnProperty(o)) {
console.log(o);
}
}
//prints:
// 0
// 1
// 2
Bu kod beklendiği gibi diziler için çalışıyor olsa da, daha iyi bir yer, . not, ^strong>asladiziler for in
for each in
kullanın. for in
bir nesne, dizi dizinleri veya değerleri alanlarında sıralar unutmayın.
var listeners = ["a", "b", "c"];
listeners.happy = "Happy debugging";
for (o in listeners) {
if (listeners.hasOwnProperty(o)) {
console.log(o);
}
}
//prints:
// 0
// 1
// 2
// happy
Hata gösterir "stil için metin al...
Referans - bu hata PHP Ne anlama geliy...
Bu ne anlama geliyor? &;'NSUnknow...
YAY kullanmak için bir proje dönüştürü...
E çift kolon " ne anlama geliyor;::&qu...