window.indexedDB.open()和indexedDB.open()有什么区别?[副本]

wgx48brx  于 2023-09-28  发布在  IndexedDB
关注(0)|答案(2)|浏览(194)

此问题已在此处有答案

Why do we write window.?(4个答案)
上个月关门了。
我看到有些人使用这种方式const request = indexedDB.open('test', 1);,有些人使用这种方式const request = window.indexedDB.open('test', 1);
你能告诉我有什么区别吗?最好的办法是什么?
我只是想学习打开indexedDB的最佳方法。

5ktev3wc

5ktev3wc1#

在技术上没有区别,尽管在某些情况下将window.添加到window对象的任何属性有助于代码的可读性。你可以从这个答案中读到更多:https://stackoverflow.com/a/33305993/3916702

oaxa6hgo

oaxa6hgo2#

indexedDB.open('test', 1)window.indexedDB.open('test', 1)的区别在于函数的作用域。在JavaScript中,window对象是表示浏览器窗口的全局对象。浏览器环境中的大多数对象和函数都是window对象的属性,包括indexedDB
当你在不使用window的情况下使用indexedDB.open('test', 1)时,JavaScript运行时将在当前作用域及其父作用域中查找indexedDB函数,直到找到为止,如果找不到,它将抛出一个错误。如果indexedDB在全局范围内可用(通常是这样),那么使用indexedDB.open('test', 1)将正确工作。
另一方面,window.indexedDB.open('test', 1)显式指定应该从window对象查找indexedDB函数。由于window是全局对象,因此本质上等效于indexedDB.open('test', 1)
在实践中,indexedDB.open('test', 1)window.indexedDB.open('test', 1)将获得相同的结果,假设indexedDB在全局范围内可用,这是现代浏览器的情况。因此,使用它们中的任何一种都是可以接受的,这取决于个人偏好和编码风格。
为了一致性和清晰性,一些开发人员可能会选择使用window.indexedDB.open('test', 1)来显式地表示他们正在从全局window对象访问函数。但是,值得注意的是,在大多数情况下,您可以安全地省略window并使用indexedDB.open('test', 1)
因此,无论哪种方式,您都可以有效地打开indexedDB数据库。如果indexedDB是全局可用的(在浏览器环境中应该是这样),那么这两种方式在功能上是相同的。选择适合您的编码风格和偏好的一个。

相关问题