javascript – 如何检查可能未定义的对象上是否存在属性?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何检查可能未定义的对象上是否存在属性?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1783字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 如何检查可能未定义的对象上是否存在属性?](/upload/InfoBanner/zyjiaocheng/702/d7e9e741afcc4f0eb13fe99067802f16.jpg)
参见英文答案 > Test for existence of nested JavaScript object key 53个
所以关于S.O.的问题回答如何检查对象上的属性是否存在. Example答案是使用Object.prototype.hasOwnProperty().
但是,如何检查可能未定义的对象的属性?
如果要尝试直接检查未定义对象上是否存在属性,那么它将是一个引用错误.
从语义上讲,直接检查代码似乎更好(ifj.prop)// dosomething – 它显示更清晰的意图.有没有办法实现这个目标?优选地,是否有内置的Javascript方法来执行此类操作或按照惯例?
Motive:一个包添加了属性user.session.email – 但我正在检查是否存在电子邮件,而不是会话,尽管会话可能不存在.
更新:许多答案都说要使用&&运算符短路.我知道这是一个可能的解决方案,但它并不完全是所期望的,因为我们似乎正在使用JS对象语法 – 也就是说,虽然你想真正检查一个对象的属性,你被迫检查对象是否存在以便这样做.
注意标记为已关闭为什么标记为已关闭?假设这是重复的链接可能不会产生相同的答案.我们正在寻找一种更好的,更具语义性的解决方案,并且标记这种封闭使得“嵌套”===“可能未定义”的假设.
这个问题有争议:
因为我现在无法回答我自己的问题.截至最近,一项提案已被提交到第1阶段here,该提案将解决这一问题.同样,问题需要一个更具语义性的解决方案,如提案中所示.
解决方法:
如果您确定父对象存在,那么:
if(obj && obj.key) {
console.log(obj.key);
}
但是,如果obj不存在,这个例子将失败.
if (obj && obj.key) {
console.log(obj.key);
}
…这就是为什么你可能想检查在检查属性时是否定义了对象的原因.这可确保在命中条件且尚未设置属性的对象时不会出现运行时错误.
if(typeof obj != "undefined" && obj.key) {
console.log('you will not see this logged')
}
您会注意到上面的示例不会引发异常.
var obj = {key: 1};
if(typeof obj != "undefined" && obj.key) {
console.log('we have obj! and val is : ' + obj.key)
}
这是一种更具防御性的方法,但它允许移植性.如果要将逻辑提取到模块中以供重用,您可能需要检查对象是否存在,或者从应用程序中可能不一定要关注的区域中冒出不必要的错误.
内容总结
以上是互联网集市为您收集整理的javascript – 如何检查可能未定义的对象上是否存在属性?全部内容,希望文章能够帮你解决javascript – 如何检查可能未定义的对象上是否存在属性?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。