2016-04-05 19 views
0
çalışmak

Ben nesne takip ederken .hamlc içinde, mevcut olup olmadığını kontrol edin, bir JavaScript vardır: @ object1 burada var olmadığını varsayalımKontrol koşulu return false EĞER ama IF içeride ifadesi hala JavaScript

.

var property01; 
// work as expected 
if (!#{@object1}) { 
    console.log("not exist"); // print 
} else { 
    console.log("exist"); 
} 

beklenen ve metni göstermek gibi bu çalışma konsolunda "yok" ama object1 böylece mevcut olması halinde ben eklemek istediğiniz bir durum söz konusudur:

var property01; 

if (!#{@object1}) { // should execute here and end the condition but not 
    console.log("not exist"); // not print 
    property01 = 'undefined'; 
} else { 
    console.log("exist"); // not print as well 
    property01 = '#{@object1.property01}'; // Delete this line will work normally but not what it should be. 
} 

yukarıda beni bir dönüş hata, "property01 'özelliği okunamıyor' property01 'özelliği okunmadı.

Bunu yapmamın nedeni, bunun @ object1 uygulamasının buraya geçirilmiş olabileceği için uygulanan başka bir sayfa olmasıdır. Bu nedenle, hangi sayfaya uygulandığına bağlı olarak değişir. "@ object1" nesnesinin var olup olmaması.

Şu anda @ object1 öğesinin tanımlanmadığından dolayı tanımsız olduğunu biliyorum. Bu yüzden, IF ifadesinde belirtilen ve ELSE'ye dahil olmayan 'tanımlanmamış' atamanız gerekir. Bu yanlış bir şey var mı?

+0

okuyamaz: olduğu gibi Senaryonu korumak istiyorsanız, basitçe 3. hatta etrafındaki tırnak kaldırmak 'property01' özelliği mevcut değildir, çünkü yanlış ve hata verir, çünkü varolan objenin yerine getirilmeye çalışılmıştır '' property01 = '# {@ object1.property01}' ' – 7urkm3n

+0

Evet, bahsettiğim gibi biliyorum ama bu yanlıştır bile neden yanlıştır O f gerçek koşulu çalıştı ?? IF durumunun olmaması durumunda OL yapılmalıdır. – Takumi

+0

Aşağıdaki yazıyı kontrol et, undefined veya null ise başka bir ifadeye atlar. – 7urkm3n

cevap

0

Yanlışlıkla property01 değerini 'undefined' dizesine ayarlıyorsunuz. Aksi

if (!#{@object1}) { 
    console.log("not exist"); 
    property01 = undefined; 
} else { 
    console.log("exist"); 
    property01 = '#{@object1.property01}'; 

}

+0

Hayır, eğer var ise object01 içindeki property01 değerini değişkene eklemenin yolu budur. Eğer object1 mevcutsa, değişken değeri object1.property01'den saklar. – Takumi

0

@object1 sonra bu property01 atadığı varsa, undefined

var property01; 

    property01 = (!#{@object1}) ? '#{@object1.property01} : undefined 
+0

Bu çözümü denedim, ancak false olduğu gibi çalışmaz, @ object1.property01 öğesi hala undefined öğesinden okunamadığı için aynı hatayı neden olarak çalıştırılıyor. ve property01 ne tanımsız ne de nesne değeri atanmış hiçbir şey (bu durumda mevcut değildir) yoktur. Özetle, ELSE ifadesine zıplamaz. – Takumi