1

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

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

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

它是否适用于所有浏览器,是否返回undefinednull或者不支持?falsewindow.openDatabase

请注意,这不仅仅是关于openDatabase任何可能并非在所有浏览器中实现的功能。我已经在做window.console && console.log()并且效果很好,但在这种情况下,我不会将任何对象保存到变量中。

4

2 回答 2

4

是的,这很好,虽然我建议在window.之后添加部分&&,只是为了防止与任何局部变量发生冲突。

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

于 2013-07-18T10:27:57.927 回答
1

我不完全相信这对于这个特定案例是否是一个好主意。

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

为什么?

如果您有一个用于数据库调用的变量,sql_db如果它为空怎么办?这将导致错误。您是否要在每次使用前加上sql_db &&?这感觉就像是一个杂物,甚至可能永远都无法做到这一点。

如果您实际上将使用调用的结果来做某事,您可能应该只选择正常的 if-else 检查。这样,您可以及早检测到故障,并且依赖于结果的代码将更可靠地工作,而无需样板变量检查。

于 2013-07-18T10:40:00.837 回答