javascript中变量"name"的奇怪行为

ech*_*cho 4 javascript

我是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]);
Run Code Online (Sandbox Code Playgroud)

结果是 n

但是,如果我将第二个"名称"变量从"名称"更改为"myName",并执行myName [0]

结果是"name1"

为什么这么奇怪?

Pau*_* S. 6

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

不同浏览器的此行为可能会有所不同,具体取决于其实现方式var.

  • @FrédéricHamidi在_Chrome_中尝试 (3认同)