2017-07-29 4 views

Répondre

3

« typeof » ne se soucie pas si la propriété existe ou non et il retournera non défini même si la propriété existe, mais a une valeur de « non défini »

Alors que, « dans » retournera true si la propriété existe et a une valeur de « non défini »

Pour un exemple, ce qui suit retournerait soit vrai ou faux selon que vous utilisez:

let person = { 
    name: 'John', 
    age: undefined 
} 

console.log('age' in person) 
// true 
console.log(typeof person.age !=="undefined") 
//false 
+0

Jonas, peut-être que vous vouliez vérifier le type de personne au lieu de l'âge? – Ahmad

0

Votre question est comme "quel est le meilleur" pour vérifier la présence d'une propriété dans un objet ", donc ce dernier ("bar" in foo) est ce que vous cherchez.

Le résultat de if("bar" in foo) est "ne le faites que s'il y a une propriété 'bar' dans foo" ce que vous demandez.

Vous pouvez également opter pour typeof foo.bar != "undefined" mais cela ne servirait à rien.