Javascritp多维数组打印单个字母

时间:2018-03-12 11:39:31

标签: 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)

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

3 个答案:

答案 0 :(得分:6)

这取决于您运行var name = ["John", "Alex"];语句的位置。

如果你将它放入一个函数中,那么它就像你期望的那样工作。

但是如果你在浏览器的控制台中运行它,那么它将在全局范围内执行。在global scope中声明的变量是properties of the global window对象。但是window对象已经有一个名为name的属性,并且它的类型无法更改。如果为其分配的值不是字符串its method toString() is used to convert it to a string

这就是声明:

var name = ["John", "Alex"];

window.name分配一个新值,因为无法更改其类型,所以数组["John", "Alex"]会转换为字符串"John,Alex"并分配给window.name

为变量(names,f.e。)使用不同的名称,即使在全局上下文中它也可以正常工作。

答案 1 :(得分:3)

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

据我了解,您应该避免使用name关键字,因为它是保留的。尝试使用它应该有效的names

答案 2 :(得分:-1)

那是因为食物[4]不是数组而是字符串“John,Alex”

food[4].split(',')[0] outputs "John"
food[4].split(',')[1] outputs Alex