检查JavaScript中对象的给定属性是否存在的最标准和最佳浏览器兼容性是什么?
我能想到如下:
1。
if(window && 'navigator' in window && 'userAgent' in window.navigator) {}
2。
if(window && window.navigator && window.navigator.userAgent) {}
每个检查开始时的window &&
检查是不必要的。自然情况下,它的值永远不会为假。(如果你在Nodejs或web worker中运行代码,其中window
全局不存在,那么该行将抛出异常,而不是评估为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/en-US/docs/Web/JavaScript/Reference/Operators/inhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors