js 全局变量,F5 刷新页面依旧保持上次值的?

2020-09-22 18:01:55 +08:00
 cs5117155
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
    <script type="text/javascript">
       var name;

       if(!name){
           name =  Math.random();
           console.log(name);
           if(!name || name=='null'){
               name = '游客';
           }
       }
       console.log(name);
    </script>
</head>
</html>

为何 js 全局变量,多次 F5 刷新页面后,name依旧保持上次的随机值. 能否在 https://developer.mozilla.org/ 这里找到对应解释

2829 次点击
所在节点    JavaScript
11 条回复
zhs227
2020-09-22 18:03:44 +08:00
是因为 Math.random 的返回不变的原因?
crystom
2020-09-22 18:10:38 +08:00
原因是 window.name 是一开始就有的。https://developer.mozilla.org/en-US/docs/Web/API/Window/name 你把变量换个名字。
KuroNekoFan
2020-09-22 18:12:40 +08:00
window.name 应该是一个 `tab` 的 metadata
zhs227
2020-09-22 18:14:26 +08:00
回复太随意了,Math.random 没问题,浏览器有问题。在 Mac 上,用 Chrome 每次都一样,用 Safari 会不一样。
yyfearth
2020-09-22 18:33:26 +08:00
@cs5117155 @zhs227 window.name 的值在不关闭窗口的情况下 一般都会保留
有些隐私模式浏览器可能会对这个值清空
cs5117155
2020-09-22 18:33:36 +08:00
@crystom 确实换个名字就可以了
en20
2020-09-22 18:47:32 +08:00
我遇到过,不要用 name
soulmt
2020-09-22 18:55:35 +08:00
@zhs227 试了以下 safari 刷新也是一样的
shentibeitaokong
2020-10-08 23:27:43 +08:00
@zhs227 Safari 和 Chrome 的表现一致,都是对 name 这个特殊的变量值不变,不知道你的 safari 是什么版本
zhs227
2020-10-08 23:49:52 +08:00
@soulmt @shentibeitaokong 用的楼主的代码,开了调试模式,用 safari 尝试了几次刷新,开着 Console 刷新,看打印。console.log 会不一样。我没用 F5 刷新+页面显示,可能不太严谨。

https://imgur.com/FtdZift

Safari 版本号 Version 12.1.1 (14607.2.6.1.1)
xingguang
2020-10-29 10:07:18 +08:00
F5 刷新是除了 webpack 热更新最浅的刷新了,很多数据都会缓存的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/709513

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX