Javascript 多维 isset()

标签 javascript jquery

运行时:

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

我得到了错误

data.custaccount is undefined

我能绕过它的唯一方法似乎是像这样使用多个 IF:

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 能够完成拯救这一天的正常工作 :)

谢谢!!!

贾斯汀

最佳答案

当然,在访问data.custaccount.webaddress之前,您需要检查是否定义了data

你可以把支票写得更短一些

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

你需要检查一下!

你是对的,使用 try/catch 是不好的做法。查找对象的另一种方法是使用 in 运算符,例如

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

关于Javascript 多维 isset(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3555516/

相关文章:

javascript - 如何从 .NET 字符串序列化 javascript 函数

javascript - 如何在 jQuery 中上下滑动多余的文本?

jquery - 为什么导航菜单栏滑动不流畅?

javascript - 无法从 URL 更改的下拉列表中获取值

javascript - 无需用户单击即可使用 jquery 搜索表行

JavaScript 表单验证无法正常工作

javascript - 如何将一个对象内部的值数组分组到另一个对象数组

javascript - 调用 jQuery 插件而不指定任何元素

javascript - vue 2 基本测试中未定义的属性

javascript - 是否可以将旧的 Rally 任务板转换为新的 Cardboard