Javascript多维数组打印单个字母

Javascript多维数组打印单个字母,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我在一个数组中有一个数组,不知何故它不能识别不同的值是分开的,所以如果我试图打印第二个值,它会打印第一个值的第二个字母 var name = ["John", "Alex"]; var food = ['pizza', 'banana', "cheese", ["bmw", "tesla"], name]; document.write(food[4][1]); 数组['bmw','tesla']工作正常,其名称数组的行为很奇怪 food[4][0] outputs J (from John)

我在一个数组中有一个数组,不知何故它不能识别不同的值是分开的,所以如果我试图打印第二个值,它会打印第一个值的第二个字母

var name = ["John", "Alex"];
var food = ['pizza', 'banana', "cheese", ["bmw", "tesla"], name];
document.write(food[4][1]);
数组
['bmw','tesla']
工作正常,其名称数组的行为很奇怪

food[4][0] outputs J (from John)

food[4][5] outputs A (from Alex).

这是因为食物不是数组,而是字符串“约翰,亚历克斯”


还应避免使用JavaScript内置对象、属性和方法的名称:


据我所知,您应该避免使用
name
关键字,因为它是保留的。尝试使用
名称
它应该可以工作。

这取决于在哪里运行
var name=[“John”,“Alex”]语句

如果你把它放到一个函数中,那么它就会按照你的预期工作

但是,如果在浏览器的控制台中运行它,那么它将在全局范围内执行。中声明的变量是对象。但是
窗口
对象已具有名为
名称
的属性,并且其类型无法更改。如果为其指定的值不是字符串

这就是为什么声明:

var name = ["John", "Alex"];
将新值分配给
窗口。名称
,由于其类型无法更改,数组
[“John”,“Alex”]
将转换为字符串
“John,Alex”
,并分配给
窗口。名称


为变量使用不同的名称(
names
,f.e.),即使在全局上下文中,它也会按预期工作。

为什么它不是对另一个数组的引用?因为食物[4]是字符串类型而不是数组。因此,如果您执行[4][0],它将在字符串的零位置输出字母。通过使用split命令,您实际上创建了一个可以使用元素的数组。问题是,当它被定义为数组时,为什么它是字符串。这是一个非常特殊的问题,涉及到
var
s如何在浏览器的全局范围内工作,以及使用一个名为类似现有
window
属性的变量的巧合。axiac的答案很准确,您应该阅读它您确实是正确的。谢谢,我完全错过了……我试过了,效果非常好。最好检查数组的声明。您可以将名称声明为字符串而不是数组(因为这是food[4][5]等于a的唯一可能原因),或者因为您在JavaScription中使用了保留字,将其从“name”更改为其他内容,从而修复了它。但你所说的数组声明是什么意思呢?如果它有方括号,则声明为数组,对吗?在php中,您可以执行array(),我在这里尝试过,但没有成功。我还可以如何声明数组?Thanks实际上不是保留字,更像是浏览器中预定义的标识符。axiac回答。谢谢,这就解决了问题。谢谢你的解释,这对我的帮助更大了!
var name = ["John", "Alex"];