【发布时间】:2016-01-23 02:26:16
【问题描述】:
我正在做一些 javascript 范围测试,但我遇到了变量值的问题。
首先我执行了这段代码:
function changeName() {
name = "Ronaldinho";
}
changeName()
console.log(name);
控制台的输出是:罗纳尔迪尼奥
然后我只执行了这段代码:
console.log(name);
控制台的输出仍然是:罗纳尔迪尼奥
我使用的是谷歌浏览器。我试图清理缓存,页面重新加载的所有选项(ctrl + F5 / shift + F5 / ctrl + R / shift + R /右键单击重新加载图标和“强制重新加载并清除缓存”),清除缓存,控制台清除,启用 de 选项“禁用缓存(在 DevTools 打开时)”。
仅当我关闭并打开一个新标签时才有效。
【问题讨论】:
-
是吗?你想达到什么目的?
-
刷新时不保留范围。你到底做了什么,在 script.js 中运行该代码,然后删除它,用简单的
console.log(name)替换它,保存 .js 文件,重新加载浏览器并仍然得到相同的输出?因为这样的事情是不可能的 -
@BBog 我也相信这种情况......所以我在 Chrome 中打开了开发工具(从此页面)并粘贴到他的第一个块中并运行它,然后我 Ctrl + F5 'ed 页面,然后运行 console.log,它确实保留了名称。
-
@马克。我明白了,我得到了相同的结果。但是您是在控制台中完成的,而不是使用单独的 JS 文件。这不是一回事。
-
@GoldShip 这就是为什么如果您切换到新选项卡会修复它......请参阅 Magus 的回答。窗口对象在刷新时不会被销毁或重新创建,因为窗口仍然存在。
标签: javascript google-chrome variables scope reload