var db = window.openDatabase&&的openDatabase();一个避免错误的好方法?

时间:2013-07-18 10:24:25

标签: javascript

这是避免错误的好方法吗?

var sql_db = window.openDatabase && openDatabase('table', '1.0', 'description', 4096);

它似乎有效,但如果没有实现功能,这是避免错误的好方法吗?稍后我会检查sql_dbundefined / null / false

它是否适用于所有浏览器,如果不支持undefined,它会返回nullfalsewindow.openDatabase吗?

请注意,这不仅仅是openDatabase,而是所有浏览器中可能未实现的任何功能。我已经在做window.console && console.log()并且工作正常,但在这种情况下,我没有将任何对象保存到变量。

2 个答案:

答案 0 :(得分:4)

是的,没关系,虽然我建议在window.之后添加&&部分,以防止与任何局部变量发生冲突。

如果没有定义全局变量,它将返回undefined - 这种行为在浏览器中是一致的,但请记住,undefined不是保留字,理论上可以覆盖。为什么有人会这样做是超出我的,但知道这一点很好。

答案 1 :(得分:1)

我并不完全相信这是否适用于这个具体案例。

对于console && console.log,我认为它非常好,但是如果您在openDatabase电话中使用它,那么可能不会。

为什么?

如果您有一个用于数据库调用的变量sql_db,如果它为空,该怎么办?这会导致错误。您是否要使用sql_db &&为每一次使用添加前缀?这感觉就像一个kludge,甚至可能不会总是这样做。

如果您实际上将使用调用的结果,您可能应该选择正常的if-else检查。通过这种方式,您可以尽早检测到故障,并且依赖于其结果的代码将更加可靠地工作,而无需进行样板变量检查。