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



检查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.navigatorwindow.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

最新更新