javascript - 为什么 JavaScript 将名为 "name"的数组解析为字符串

标签 javascript arrays

定义数组时:

var name = ['A', 'B', 'C'];

并将其显示在控制台上:

console.log(name);

我们得到一个字符串!

"A,B,C"

但是当用另一个名称定义数组时:

var haha = ['A', 'B', 'C'];

当显示“它应该做什么”时,我们得到一个数组!

(3) ["A", "B", "C"]
0: "A"
1: "B"
2: "C"
length: 3
__proto__: Array(0)

为什么会发生这种情况?

最佳答案

name 是一个全局属性,是 window 的一部分。目的。它有一个特殊的属性,可以通过调用 .toString() 方法将其值转换为字符串:

window.name will convert all values to their string representations by using the toString method.

- MDN

因此,当您将全局变量设置为 var name 时,您就是在窗口上设置全局变量 name,该窗口会将数组转换为字符串。您可以使用 letconst 不将其添加到 window 中,从而将其保留为数组:

const name = [1, 2, 3];
console.log(name);

关于javascript - 为什么 JavaScript 将名为 "name"的数组解析为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60068204/

相关文章:

javascript - 按 Asc 顺序字符串化 JS 对象

javascript - FourSquare API 不支持 CORS

java - 将 switch case 与数组结合使用

java - 计算方阵的指数

c++ - dynamic_cast 到相同的类型不检查对象的类型

javascript - 有人可以向我解释为什么绑定(bind)方法在这些示例中不起作用

javascript - 在 MathJax 中有什么理由支持 MathML 语法而不是 TeX?

javascript - 使用选择选项销毁 Bootstrap Popover

c - 这是什么意思,我该如何纠正它 *** 检测到堆栈粉碎 *** : ./array1output 终止

c - 具有有效索引的数组未在 c 中返回正确的状态代码