SORU
31 Ocak 2011, PAZARTESİ


Başlatmak için doğru yolu bir dizi'javascript uzunluğu s?

Çoğu öğreticiler okudum üzerinde diziler JavaScript (dahil w3schools devguru) Öner yapabilirsiniz başlatmak bir dizi ile belli bir uzunluğu geçen bir tam sayı Dizisi kurucu kullanarak var test = new Array(4); sözdizimi.

Bu sözdizimi, js dosyaları liberal kullandıktan sonra, jsLint ve çok korkutuyordu: dosyaları ettim

Hata: satır 1 karakter Sorunu 22:') ' Bekleniyordu ve yerine gördüm '4'.
var = yeni Dizi test(4);
Satır 1 karakter sorunu 23:'; 'yerine' gördü) ' Bekleniyor.
var = yeni Dizi test(4);
Satır 1 karakter sorunu 23: tanımlayıcı ve yerine bir testere') ' Bekleniyordu.

jsLint's explanation of its behavior, okuduktan sonra jsLint gerçekten new Array() sözdizimi sevmiyor gibi görünüyor, ve bunun yerine diziler bildirirken [] tercih ediyor.

Bir kaç sorum var. İlk olarak, neden? Bunun yerine new Array() sözdizimini kullanarak herhangi bir risk miyim? Dikkat etmem gereken uyumsuzluklar tarayıcı var mı? Ve ikincisi, ben köşeli sözdizimini geçin, orada bir diziyi bildirmek ve uzunluğunu ayarlamak için herhangi bir yolu var mı tek bir çizgi üzerinde, ya da eğer böyle bir şey yapmak zorundayım:

var test = [];
test.length = 4;

Şimdiden teşekkürler.

CEVAP
31 Ocak 2011, PAZARTESİ


  1. Neden uzunluğu başlatmak istiyor musunuz? Teorik olarak bunun için gerek yok. Hatta length bir dizi boş olup olmadığını öğrenmek için kullanan tüm testleri dizinin boş olduğunu bildirir çünkü kafa karıştırıcı davranışlara neden olabilir.
    Some tests büyük diziler ilk uzunluk ayarıolabilireğer bu dizi daha sonra dolu olursa daha verimli olabilir, ama performans artışı (varsa) Tarayıcı Tarayıcı farklı görünüyor.

  2. jsLint, constructer belirsiz olduğu için new Array() gibi değil.

    new Array(4);
    

    boş bir dizi oluştururuzunluğu4. Ama

    new Array('4');
    

    bir dizi oluştururdeğeri içeren'4'.

Dizi uzunluğu başlatmak gerek yok JS. yorum sizin ile ilgili: Dinamik olarak büyür. Biraz değişken, örneğin uzunluğu saklayabilirsiniz

var data = [];
var length = 5; // user defined length

for(var i = 0; i < length; i  ) {
    data.push(createSomeObject());
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Film Riot

    Film Riot

    16 NİSAN 2006
  • humanHardDrive

    humanHardDri

    16 Mart 2011
  • Klemens Torggler

    Klemens Torg

    11 Mart 2008