// aşağıdaki kod satırı güvenilmezdir if (person1.age) { // do something with age }
Çünkü javascripte if şartında true ve false sonuç döndürürken, true ve false neticesini etkileyen truthy ve falsy değerler vardır.
truthy doğru olarak kabul edilecek tüm değerler anlamındadır. Aşağıdaki değerler true döndürür
- an object (nesne),
- a nonempty string (boş olmayan bir dize),
- a nonzero number (sıfır olmayan bir sayı),
- true (doğru)
falsy yanlış olaran kabul edilecek tüm değerler anlamındadır. Aşağıdaki değerler false döndürür
- değer atanmamış (null),
- tanımlanmamış(undefined),
- 0,
- yanlış (false),
- NaN,
- boş bir dize (empty string)
Örneği hatırlayalım
// aşağıdaki kod satırı güvenilmezdir if (person1.age) { // do something with age }
kişinin yaşı 0 olması durumunda ya da farklı bir örnekte negatif bir sonuç çıkmasında yaş property si olmasına rağmen negatif sonuç verebilir.
Bir property nin varlığını test etmek için daha güvenilir yol in operatörünü kullanmaktır
In operatörü belirli bir adla belirli bir property i arar ve verilen anahtar hash table da mevcutsa bulursa doğru döndürür.
Örnek
var person1 = { name: "Nicholas", sayName: function() { console.log(this.name); } }; console.log("name" in person1); // true1
console.log("sayName" in person1); // true1
console.log(person1.hasOwnProperty("name")); // true
console.log(person1.hasOwnProperty("sayName")); // true
hasOwnProperty metodu in operatörü gibi property nin object içerisinde olup olmadığı testini yapar.
console.log("name" in person1); // false, az önce silindi
Literal Object ile Örnek:
Hiç yorum yok:
Yorum Gönder