Spesifikasyonlara göre.
12.5 if ifadesi
.....
2. ToBoolean (GetValue (exprRef)) doğruysa,
a. İlk İfadeyi değerlendirmenin sonucunu döndür.
3. Başka,
....
ToBoolean, spesifikasyona göre,
ToBoolean soyut işlemi, argümanını Tablo 11'e göre Boolean türünde bir değere dönüştürür:
Ve bu tablo dizeler hakkında bunu söylüyor:
Bağımsız değişken boş Dize ise (uzunluğu sıfırdır) sonuç false olur; aksi takdirde sonuç doğrudur
Şimdi, "0" == false
değerini soyut işlemden aldığını belirten eşitlik operatörünü neden GetValue(lref)
sağ taraf için aynı eşleştiğini açıklamanız gerektiğini açıklamak için.
Bu ilgili kısmı şöyle açıklar:
IsPropertyReference (V) ise,
a. HasPrimitiveBase (V) yanlışsa, [[Get]] dahili baz yöntemi olsun, aksi halde olsun
aşağıda tanımlanan özel [[Get]] dahili yöntem olabilir.
b. Bu değer olarak base kullanarak get internal yöntemini çağırmanın sonucunu döndürün
Bağımsız değişken için GetReferencedName (V)
Başka bir deyişle, bir dize, dahili get yöntemini geri çağıran ve yanlış görünecek olan ilkel bir tabana sahiptir.
GetValue işlem kullanımını kullanarak bir şeyleri değerlendirmek ==
istiyorsanız, kullanarak değerlendirmek istiyorsanız ToBoolean
, kullanın ===
("katı" eşitlik operatörü olarak da bilinir)
"0"
bir dizedir ve boş olmadığından true olarak değerlendirilir.