如果我需要检查对象是否可用,哪一个更好。 'in'or typeof obj.key!==“undefined”
我需要检查一个对象中是否有子对象可用。 让父对象为window
,子对象为navigator
。 可能有多种方式来做到这一点。如果我需要检查对象是否可用,哪一个更好。 'in'or typeof obj.key!==“undefined”
'navigator' in window
typeof window.navigator !== "undefined"
哪一个会是理想的方式做到这一点。
你的意思是?要检查
做另一个对象的对象所有者或实例?
'navigator' in window different with typeof window.navigator !== "undefined"
如果你想检查
,确实Navigator在窗口中,您最好使用
typeof window.navigator !== "undefined" //safety
,如果你想查询的实例,你最好使用关键字
实例关注
你不应该使用
if (variable) //do something, because it's not safety.
你说,窗口中的'navigator'是用'typeof运算window.navigator不同!== “未定义”' 这是怎么回事? – GetGimphed
如果它是一个对象,下面四个方法应具有相同的时间复杂度:
if('navigator' in window){...}
if(typeof window.navigator !== "undefined"){...}
if(window.navigator){...}
if(window.hasOwnProperty('navigator')){...}
1.In第一种方式,如果你检查导航作为一个变量”
if(navigator)
并且未声明导航器变量,您的代码将导致错误。但是,如果你你选择了它,例如窗口的参数,如:
if(window.navigator)
你不会得到一个错误,你的支票将导致以undefinded =>假的(因为你将其转换为“如果里面布尔“声明)。重要的是要记住,如果变量为null,if语句也会导致false。
2.采用第二语法您检查正是你在你的问题提什么。 “我需要检查一个对象中是否有子对象可用。”
最后,我会建议你的问题的第二种方式。
第一种方法不是'if(navigator)'或'if(window.navigator)'。它是'if('navigator'in window)'。 – GetGimphed
真的没关系,你甚至可以做'if(window.navigator)',但它都是基于意见的 – adeneo
我更喜欢1,只因为它更短 –