如何在页面重新加载时清除 JavaScript 变量?

How to clear JavaScript variables on page reload?

我正在做一些 javascript 范围测试,我遇到了变量值的问题。

首先我执行了这段代码:

function changeName() {
    name = "Ronaldinho";
}
changeName()
console.log(name);

控制台的输出是:罗纳尔迪尼奥

然后我只执行了这段代码:

console.log(name);

控制台中的输出仍然是:罗纳尔迪尼奥

我正在使用 Google Chrome。我尝试清理缓存,页面重新加载的所有选项(ctrl + F5/ shift + F5 / ctrl + R/ shift + R / 右键单击​​重新加载图标和"Force reload and clear cache"),清除缓存,清除控制台,启用de选项 "Disable cache (while DevTools is open)".

它仅在我关闭并打开新标签页时有效。

如果您忘记javascript中的var关键字,变量将在根对象中创建。在浏览器中,根对象是 window。所以你会在 window.name 中找到你的变量。如果你想删除它,你可以做 delete window.name

编辑:在 Chrome 控制台中,执行的代码受到保护。 Chrome 使用 window 以外的其他对象。您将在 this.name 中找到您的变量。所以你可以用 delete this.name.

删除它

更改变量名称,尝试 "myName"。由于您从不使用 "var" 关键字,因此 name 在全局范围内。

但发生了其他事情:window.name 已被占用!因为 window 有一个 name 与之关联。 (有关详细信息,请参阅 window.open

或者更好:在 99% 的情况下使用 var 关键字来声明一个变量,其余时间,不要声明一个变量(意思是 window[anyVariableName] 并不是真正声明一个变量变量,而不是为 window 对象定义一个新键,在浏览器的上下文中随处隐式可用)。

最终代码(如果要保留变量name):

var name;

function changeName() {
    name = "Ronaldinho";
}

console.log(name); // undefined
changeName()
console.log(name); // "Ronaldinho"