[英]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.navigator
或window.navigator.userAgent
作为属性出现,但设置为false
, null
, undefined
, 0
, NaN
或''
(这些特定的属性在浏览器中并不自然),然后# 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.