【发布时间】:2020-06-15 13:29:04
【问题描述】:
假设我们在本地存储中有一个用户对象
window.localStorage.setItem('user', { cars: [] })
用户单击按钮并调用函数foo,它执行此操作:
const user = JSON.parse(window.localStorage.getItem('user'));
console.log('user: ', user); // user has data here - WHY???
const flag = false;
if (!flag) {
user.cars = [
{
name: 'lambo',
}
];
const updatedUser = user.cars;
window.localStorage.setItem('user', JSON.stringify(updatedUser));
}
在console.log("user: ", user),用户对象已经包含一个数组,其中包含lambo 的1 个条目,但是直到稍后才添加该条目.. 这怎么可能?
【问题讨论】:
-
window.localStorage.setItem很可能被同一个或其他一些触发器调用并设置了值。 -
因为您在页面的先前执行时将数据放在本地存储中。
-
@RobbyCornelissen 那么有什么办法呢?
-
致所有对此问题投反对票的人——这不是解决问题的方法。这不是 SO 的意义所在。如果你要投反对票,至少提供一个资源的理由,这样我就可以有办法解决这个问题
-
如果您不希望数据在页面重新加载和浏览器会话中存活,只需将其存储在变量中即可。如果您希望它在页面重新加载后仍然存在,请使用
sessionStorage。如果您希望它在浏览器会话中继续存在,请使用localStorage。