这是避免错误的好方法吗?
var sql_db = window.openDatabase && openDatabase('table', '1.0', 'description', 4096);
它似乎有效,但如果没有实现功能,这是避免错误的好方法吗?稍后我会检查sql_db
是undefined
/ null
/ false
。
它是否适用于所有浏览器,如果不支持undefined
,它会返回null
,false
或window.openDatabase
吗?
请注意,这不仅仅是openDatabase
,而是所有浏览器中可能未实现的任何功能。我已经在做window.console && console.log()
并且工作正常,但在这种情况下,我没有将任何对象保存到变量。
答案 0 :(得分:4)
是的,没关系,虽然我建议在window.
之后添加&&
部分,以防止与任何局部变量发生冲突。
如果没有定义全局变量,它将返回undefined
- 这种行为在浏览器中是一致的,但请记住,undefined
不是保留字,理论上可以覆盖。为什么有人会这样做是超出我的,但知道这一点很好。
答案 1 :(得分:1)
我并不完全相信这是否适用于这个具体案例。
对于console && console.log
,我认为它非常好,但是如果您在openDatabase
电话中使用它,那么可能不会。
为什么?
如果您有一个用于数据库调用的变量sql_db
,如果它为空,该怎么办?这会导致错误。您是否要使用sql_db &&
为每一次使用添加前缀?这感觉就像一个kludge,甚至可能不会总是这样做。
如果您实际上将使用调用的结果,您可能应该选择正常的if-else检查。通过这种方式,您可以尽早检测到故障,并且依赖于其结果的代码将更加可靠地工作,而无需进行样板变量检查。