2010-08-24 4 views
3

Lors de l'exécution:Javascript multidimensioned isset()

if (data.custaccount.webaddress) { 
    alert('found it'); 
} 

Je reçois l'erreur

data.custaccount is undefined 

La seule façon que je peux contourner semble être avec plusieurs FI comme ceci:

if (undefined != data && undefined != data.custaccount && undefined != data.custaccount.webaddress) { 
    alert('found it'); 
} 

Y at-il un moyen de le faire plus simplement?

En php, nous utilisions normalement le isset (data.custaccount.webaddress) et cela fonctionnait plutôt bien. Y at-il un équivalent en javascript (ou jquery)?

Nous avons utilisé try/catch, mais nous avons constaté que cela ralentissait considérablement les performances du script.

Je l'ai vu quelqu'un d'autre demander quelque chose de similaire sur http://verens.com/2005/07/25/isset-for-javascript/ sans succès, mais espère que stackoverflow fera de son travail normal de sauver la journée :)

Merci !!!

Justin

Répondre

2

Bien sûr, vous devez vérifier si data est défini, avant d'accéder à data.custaccount.webaddress.

Vous pouvez écrire que l'enregistrement plus raccourcir comme

if(data && data.custaccount && data.custaccount.webaddress){ 
} 

Vous devez vérifier cela!

Vous avez raison, en utilisant try/catch serait une mauvaise pratique. Une autre façon de rechercher l'objet pourrait être en utilisant l'opérateur in comme

if('custaccount' in data && 'webaddress' in data.custaccount){ 
} 
+2

La première approche semble évidente, mais ne fonctionne pas correctement: si 'data.custaccount.webaddress' retourne une valeur falsy (' false', '0',' "" ', etc.), il ne fait pas ce qu'il est destiné à faire. –

Questions connexes