2010-08-24 3 views
3

При работе:Javascript multidimensioned Исеть()

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

Я получаю ошибку

data.custaccount is undefined 

Единственный способ, которым я могу обойти это, кажется, с несколькими МСФ, как так:

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

Есть ли способ сделать это проще?

В php мы обычно использовали isset (data.custaccount.webaddress), и это сработало достаточно хорошо. есть ли эквивалент в javascript (или jquery)?

Мы использовали try/catch, но обнаружили, что значительно замедлить работу сценария.

Я видел кого-то просить что-то похожее на http://verens.com/2005/07/25/isset-for-javascript/ без какого-либо успеха, но я надеюсь, что StackOverflow будет делать это нормальная работа сэкономив день :)

Спасибо !!!

Джастин

ответ

2

Конечно, вы должны проверить, если data определена, перед обращением к data.custaccount.webaddress.

Вы можете написать, что регистрация более сократить как

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

Вы должны проверить это!

Вы правы, используя try/catch было бы плохой практикой. Другой способ для поиска объекта может быть с помощью оператора in как

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

Первый подход кажется очевидным, но не полностью функциональны: если 'data.custaccount.webaddress' возвращает falsy значение (' false', '0',' "" и т. Д.), Он не делает того, что он должен делать. –

Смежные вопросы