每当我初始化一个名为'name'的变量时,它都会通过页面保持其值。
像这样:
page1.html
<html>
<script>
var name = prompt("What's your name?");
alert(name);
</script>
<a href='page2.html'> Page2</a>
</html>
page2.html
<html>
<script>
alert(name);
</script>
</html>
因此,在两个页面中,变量名称保留了在第一页的提示中给出的值,两个页面提醒同样的事情,有人可以解释为什么会发生这种情况吗?
答案 0 :(得分:5)
您所看到的行为并不正常,并且几乎不会对任何其他变量起作用。 name
实际上是Javascript中的保留变量,这就是您看到有趣行为的原因。
Javascript中的所有变量都是window
对象的属性。如果您创建名为age
的变量,则还可以在window.age
访问该变量。 window.name
是当前浏览器窗口的一个特殊属性,允许为其指定名称,并且此值可以在页面之间保留。
如果您将变量的名称更改为age
,它将恢复正常工作 - 该变量在page2.html中将为空。
答案 1 :(得分:3)
全局name
变量是window.name
property。它是一个在同一浏览上下文中跨页面加载确实存在的字符串 - 如果在新选项卡中打开第二页,它就不应该“工作”。
答案 2 :(得分:1)
它不会通过页面保持其价值,并且这两个页面不会提醒相同的事情。
页面中必须有一些其他代码将name
设置为某个值。