2010-11-16 25 views
5

Chrome'da tuhaf bir hata alıyorum ... aşağıdaki ekran görüntüsüne bakın.Özellik Ayarlanamıyor ... undefined --- tuhaf

Nesne değişmez sözdizimini kullanarak kayıt yapıyorum.

"id" özelliğini ayarlamayı ve istisnayı almayı deniyorum.

denedim ikisi:

record['id'] = 'wtf'; 

ve ayrıca

record.id = 'wtf'; 

Burada neler oluyor olabilir .... benim komut her yerde sözdizimi bu tür kullanılır? Bu bir hata Chrome'da mı?

alt text

DÜZENLEME: şimdilik sorunu çözdük, ama yine de bu neden oluyor emin değilim. Kayıt tanımının if blogun dışında gerçekleşmesi için taşındım. Ne oluşabileceğini bilen var mı? Tüm değişken beyannamelerin işlev kapsamına alındığını düşündüm ve bu yüzden bu bir sorun olmamalıydı.

+0

Hatayı yeniden oluşturamıyorum (Mac üzerinde Chrome 7 ve Firefox'ta). Buradaki bilgilerden ve ekran görüntüsünden, kodunuzda yanlış bir şey yok gibi görünüyor. "Hata" satırından önce "kaydın" değeri nedir? – nickf

cevap

15

Sorun, büyük olasılıkla dl'un sıfırdan küçük veya sıfıra eşit olmasıdır, bu nedenle record başlatılan ifade çalıştırılamaz. Girintinizden itibaren, her iki ifadenin de if bloğunun bir parçası olması amaçlanmış gibi görünüyor, ancak hiçbir parantez olmadan, record['id'] = 'wtf'; ifadesi ne olursa olsun yürütülür.

Değişken başlatmayı if ifadesinin dışına taşıyarak, her halükarda olmasını zorladım ve ödevi if bloğun içine taşıdı (ki, istediğim şey buydu). Gerçekten her iki durumda da record başlatmak istiyoruz sürece

if (dl > 0) { 
    var record = {}; 

    record.id = 'wtf'; 
} 

: Muhtemelen

daha iyi bir yolu

böyle parantez ekliyor çözmek için.

İşlevin kapsama ediliyor değişken bildirimleri hakkında doğru, ancak kodda bu noktaya gelinceye kadar atama olmaz. record kapsamdaydı, ancak henüz hiçbir şey atamadığınız için varsayılan değeri undefined idi.

+0

Vay. Bazı hatalar kendiliğinden oluşur. Güzel yakalayış ! – rvandervort

0

Benim için çalışıyor, işe yaramaması için bir neden yok. Kesin çizgiye başvurduğundan emin misin? Bunu ayarlamadan önce alert(record) ne olur? Henüz hata ayıklamaya çalıştınız mı?

+0

Aslında, sanırım şu anda sorunu çözdüm ... ama yine de bunun neden olduğundan emin değilim. If-block dışındaki kayıt tanımını taşıdım ve işe yaramış gibi görünüyor ... Asıl sorumu güncelleyeceğim. – rvandervort

+0

@rvandervort: sebebini bulursanız, sebebini paylaştığınızdan emin olun! – nickf

İlgili konular