33

我一直在做以下事情:

var store = window.localStorage;
store.setItem()

但现在我看到这样做的代码:

localStorage.setItem()

两者都做同样的事情吗?

4

5 回答 5

37

除非您声明了localStorage在自定义范围内命名的变量,否则它们是相同的。localStoragewindow.localStorage. 事实上,全局命名空间中的每个变量都可以作为window.<variableName>

例如:

<script>
function foo() {
    // here window.localStorage == localStorage
}
function foo2() {
    var localStorage = 10;
    // here window.localStorage != localStorage 
    // since you have a local variable named localStorage
}
</script>
于 2012-09-30T09:15:09.403 回答
6

"window" 是 Javascript 中的全局对象,所以如果没有发生冲突的机会,你可以省略它

于 2012-09-30T09:15:10.547 回答
1

window.localStorage 和 localStorage 没有区别,Window 都是全局对象

窗口是默认前缀

但正确的是window.localStorage因为 localStorage 属性是窗口对象的一部分。

于 2012-09-30T09:15:35.083 回答
1

这是旧的,但今天我可能发现了不同之处。

我有一个 React 应用程序,当我在没有 WI DOW 的情况下使用 SSL 在服务器上运行它时“忘记”了 localstorage 值。没有 SSL,它工作正常。

我回去并将WINDOW添加到对localstorage的所有引用中,问题就消失了

于 2020-05-30T03:38:09.493 回答
0

据称,window.localStorage 使查找 localStorage 比编写 localStorage 更快。

将对它的引用存储在变量上可以使其更快。

无论如何,这些改进在现代浏览器上可以忽略不计。只有在性能成为问题时它才会变得有用。
无论如何,您可能会了解为什么要这样做。

于 2013-02-24T19:27:37.970 回答