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

标签 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]);

结果是n

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

结果是“name1”

为什么这么奇怪?

最佳答案

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

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

关于javascript - JavaScript 中变量 "name"的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765063/

相关文章:

Javascript - 使用 event.target 单击元素外部不起作用

JavaScript HTML 表格解析

javascript - 无法使用 es6、babel、webpack 3、javascript 打印动态消息

javascript - SetVariable 在 FireFox 中有效,但在 Internet Explorer 中无效?

javascript - 在运行时将代码插入到函数体中

javascript - haaxis.format 在 Chartkick 中不起作用

javascript - 有没有办法让算术运算符在 Javascript ES6 中使用 getter 和 setter?

Javascript 文本相似度算法

javascript - 我的错误日志 - 在 AngularJS 中的 Controller 之间共享其方法

javascript - ReactJS - 如何根据另一个组件更改组件的状态