检查JavaScript中的对象中是否存在属性(浏览器合规性)

时间:2016-09-20 23:30:32

标签: javascript

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

我能想到以下几点:

1

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

2

{{1}}

2 个答案:

答案 0 :(得分:2)

每次检查开始时window &&检查是不必要的。从来没有一个自然的情况会被评估为假。 (如果您在Nodejs中或在window全局不存在的Web工作者中运行代码,那么该行将抛出异常,而不是评估为false。没有环境在哪里window &&会改善事情,并且会产生误导。)

#1将检查window对象是否具有任何值的navigator属性等。#2将检查window对象是否具有navigator属性一个真正的价值。除非您希望window.navigatorwindow.navigator.userAgent作为属性出现,但设置为falsenullundefined0,{{1 }},或NaN(这些特定属性在浏览器中并不是很自然),那么#2就可以正常工作,并且它会更短。

答案 1 :(得分:0)

两者都是标准的,完全支持。使用2,因为它是最常用的,更短的,并且(不重要)自javascript开始以来得到支持,而1出现在ES3中。

有关详细信息,请参阅MDN:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors