阻止浏览器在页面刷新后记住JS变量

时间:2016-01-30 20:16:23

标签: javascript browser scope global-variables

我已经看过几个问题,询问如何记住这个变量,但是我遇到了令人惊讶的相反问题。

我的main.js文件将包含:

console.log(name);

我一无所获。如果我尝试在控制台中记录它,则返回undefined,这是预期的,

现在我创建这样的变量:

var name = "Sandy"; //global variable
console.log(name); //returns "Sandy" which is also expected.

但现在意外发生了。我删除了变量,因此我们回到此处,然后刷新页面:

console.log(name); //This returns "Sandy" still...

这是怎么回事?为什么?我认为这是饼干,所以我在隐身模式下尝试过(也许我误解了隐姓埋名?)但它的工作原理完全一样。

为了使变量消失,我必须关闭浏览器并打开一个新窗口。

在简要阅读了LocalStorage,cookies和隐身之后,听起来像是问题,但是我不能手动创建cookie吗?

似乎浏览器应该忘记变量,除非我明确地将变量设置为cookie。

1 个答案:

答案 0 :(得分:1)

通过声明一个名为name的全局变量,您覆盖一个window.name属性,在页面刷新时不会重置。

window是一个内置对象,特定于Web浏览器中每个打开的选项卡,表示包含文档。您可以详细了解window对象here以及有关其name属性here的更多信息。

您还可以通过在定义变量之前和之后记录window.name来检查代码执行过程中发生的情况。

最好避免在浏览器中运行的JavaScript代码中使用name作为变量。将您的变量设置为其他内容(不是保留字或内置对象的名称),您的代码将起作用。