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

Gol*_*hip 3 javascript variables scope google-chrome reload

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

首先我执行了这段代码:

function changeName() {
    name = "Ronaldinho";
}
changeName()
console.log(name);
Run Code Online (Sandbox Code Playgroud)

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

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

console.log(name);
Run Code Online (Sandbox Code Playgroud)

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

我在使用Google Chrome.我试图清理缓存,页面重新加载的所有选项(ctrl + F5/shift + F5/ctrl + R/shift + R /右键单击重新加载图标和"强制重新加载并清除缓存"),清除缓存,控制台清除, enable de option"禁用缓存(当DevTools打开时)".

它仅在我关闭并打开新选项卡时有效.

Mag*_*gus 7

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

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


axe*_*uch 5

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

但其他事情发生了:window.name已经被采取了!因为窗口name与之关联.(详情请参阅window.open参考资料)

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

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

var name;

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

console.log(name); // undefined
changeName()
console.log(name); // "Ronaldinho"
Run Code Online (Sandbox Code Playgroud)