【问题标题】:strange behavior for variable "name" in javascript [duplicate]javascript中变量“名称”的奇怪行为[重复]
【发布时间】:2014-03-31 15:01:19
【问题描述】:

我是 javascript 新手,我今天尝试了一个示例,有人可以帮我解释一下原因吗?

所有测试都在 Chrome 的控制台面板上完成:

var greetingHello = "Hello";
var name = prompt("please enter your name");
document.write(greetingHello + " " + name + "<br>");

var name = new Array("name1","name2","name3");
document.write(name[0]);

结果是n

但如果我将第二个“name”变量从“name”更改为“myName”,并执行 myName[0]

结果是“name1”

为什么这么奇怪?

【问题讨论】:

标签: javascript


【解决方案1】:

您的问题来自与 String window.name 的冲突,当您尝试在全局命名空间中设置 name 时,您实际上是在调用一个调用 toString 的 setter em> 和["name1","name2"].toString()[0] === "n"

此行为可能因浏览器的var 的实现而异。

【讨论】:

  • namevar 保护。应该没有冲突。
  • @FrédéricHamidi 在 Chrome 中尝试
  • +1,使用 Opera 20 成功复制了这个。另外,var myName = new Array("name1", "name2"); window.myName; 将在控制台中打印数组。
  • @Paul,j08691 的小提琴在 Chrome 中给出了预期的结果。但是,我怀疑这是因为小提琴没有在全局范围内解析 var name = ...。我会仔细检查。
  • @FrédéricHamidi 它包含在 onload 中,请参阅 jsfiddle.net/D54mG
猜你喜欢
  • 1970-01-01
  • 2016-09-28
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
相关资源
最近更新 更多