此问题已在此处有答案:
Why do we write window.?(4个答案)
上个月关门了。
我看到有些人使用这种方式const request = indexedDB.open('test', 1);
,有些人使用这种方式const request = window.indexedDB.open('test', 1);
。
你能告诉我有什么区别吗?最好的办法是什么?
我只是想学习打开indexedDB的最佳方法。
此问题已在此处有答案:
Why do we write window.?(4个答案)
上个月关门了。
我看到有些人使用这种方式const request = indexedDB.open('test', 1);
,有些人使用这种方式const request = window.indexedDB.open('test', 1);
。
你能告诉我有什么区别吗?最好的办法是什么?
我只是想学习打开indexedDB的最佳方法。
2条答案
按热度按时间5ktev3wc1#
在技术上没有区别,尽管在某些情况下将
window.
添加到window
对象的任何属性有助于代码的可读性。你可以从这个答案中读到更多:https://stackoverflow.com/a/33305993/3916702。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
是全局可用的(在浏览器环境中应该是这样),那么这两种方式在功能上是相同的。选择适合您的编码风格和偏好的一个。