用于检查JavaScript中是否存在对象的给定属性的最高标准和最佳浏览器兼容性是什么?
我能想到以下几点:
1
if(window && window.navigator && window.navigator.userAgent) {}
2
{{1}}
答案 0 :(得分:2)
每次检查开始时window &&
检查是不必要的。从来没有一个自然的情况会被评估为假。 (如果您在Nodejs中或在window
全局不存在的Web工作者中运行代码,那么该行将抛出异常,而不是评估为false。没有环境在哪里window &&
会改善事情,并且会产生误导。)
#1将检查window
对象是否具有任何值的navigator
属性等。#2将检查window
对象是否具有navigator
属性一个真正的价值。除非您希望window.navigator
或window.navigator.userAgent
作为属性出现,但设置为false
,null
,undefined
,0
,{{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