繁体   English   中英

检查JavaScript中对象中是否存在属性(浏览器兼容性)

[英]Checking if property exists in object in JavaScript (browser compliance)

检查JavaScript中是否存在对象的给定属性的最标准和最佳浏览器兼容性是什么?

我可以想到以下几点:

1。

if(window && 'navigator' in window && 'userAgent' in window.navigator) {}

2。

if(window && window.navigator && window.navigator.userAgent) {}

不需要在每个检查开始时进行window &&检查。 从来没有自然的情况会将其评估为false。 (如果您在Nodejs或不存在全局window的Web Worker中运行代码,则该行将引发异常,并且不会求值为false。在这样的环境中, window &&不会改善任何情况,并在其中存在环境有误导性。)

#1将检查window对象是否具有带有任何值的navigator属性,等等。#2将检查window对象是否具有带有真实值的navigator属性。 除非您期望window.navigatorwindow.navigator.userAgent作为属性出现,但设置为falsenullundefined0NaN'' (这些特定的属性在浏览器中并不自然),然后# 2可以正常工作,并且它的长度要短得多。

两者都是完全标准和完全支持的。 一起去2 ,因为它是最常用的,是短,(这不是问题),因为JavaScript的诞生以来得到了支持,而1在ES3走了过来。

有关更多详细信息,请参见MDN:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/在 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM