如何在页面重新加载时清除 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"
我正在做一些 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"