我在一个数组中有一个数组,并且不知何故它不会将不同的值识别为单独的,所以如果我尝试打印第二个值,它会打印出第一个值的第二个字母。
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).
答案 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