
<html> <head> <meta http-equiv="Content-Type" cOntent="text/html; charset="> <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/ 这里找到对应解释
1 zhs227 2020-09-22 18:03:44 +08:00 是因为 Math.random 的返回不变的原因? |
2 crystom 2020-09-22 18:10:38 +08:00 原因是 window.name 是一开始就有的。https://developer.mozilla.org/en-US/docs/Web/API/Window/name 你把变量换个名字。 |
3 KuroNekoFan 2020-09-22 18:12:40 +08:00 window.name 应该是一个 `tab` 的 metadata |
4 zhs227 2020-09-22 18:14:26 +08:00 回复太随意了,Math.random 没问题,浏览器有问题。在 Mac 上,用 Chrome 每次都一样,用 Safari 会不一样。 |
7 en20 2020-09-22 18:47:32 +08:00 via iPhone 我遇到过,不要用 name |
9 shentibeitaokong 2020-10-08 23:27:43 +08:00 @zhs227 Safari 和 Chrome 的表现一致,都是对 name 这个特殊的变量值不变,不知道你的 safari 是什么版本 |
10 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) |
11 xingguang 2020-10-29 10:07:18 +08:00 F5 刷新是除了 webpack 热更新最浅的刷新了,很多数据都会缓存的 |