我一直在做以下事情:
var store = window.localStorage;
store.setItem()
但现在我看到代码这样做了:
localStorage.setItem()
两者都做同样的事情吗?
答案 0 :(得分:19)
除非您在自定义范围内声明了名为localStorage
的变量,否则它们是相同的。 localStorage
是指window.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>
答案 1 :(得分:3)
“window”是Javascript中的全局对象,因此如果没有冲突的可能性,可以省略它
答案 2 :(得分:0)
window.localStorage和localStorage之间没有区别Window
是全局对象
该窗口是默认前缀
但正确的是window.localStorage
,因为localStorage属性是window对象的一部分。
答案 3 :(得分:0)
据说,window.localStorage使得找到localStorage比仅写localStorage更快。
在变量上存储对它的引用会使它更快。
无论如何,这些改进在现代浏览器中可以忽略不计。只有在表现成为一个问题时才会变得有用。
无论如何,你可以了解为什么会这样做。
答案 4 :(得分:0)
这是旧的,但是今天我可能发现了一个不同之处。
我有一个React应用程序,当我在不带WI DOW的SSL上在服务器上运行它时,该应用程序“忘记了” localstorage值。没有SSL,它工作正常。
我回过头并将WINDOW添加到所有对localstorage的引用中,问题消失了