我很困惑为什么这个代码的结果名称[0]等于“f”而不是“foo”。我认为当我通过''分裂方法时,“foo”就是结果。
var ar = [];
ar[0] = "foo bar";
ar[1] = "dumdumdum";
var name = ar[0].split(' ');
console.log(name[0]);
答案 0 :(得分:4)
"名称"指的是window.name并且正在使用中。 所以你的数组变成了一个字符串。
使用另一个变量,例如array2
var ar = [];
ar[0] = "foo bar";
ar[1] = "dumdumdum";
var name2 = ar[0].split(' ');
console.log(name2[0]);
答案 1 :(得分:4)
变量name
在浏览器中保留。如果您要进入开发人员控制台(单击f12),并键入window.name
,您会看到它会为您提供""
或其他字符串结果。
您之前的代码ar[0].split(' ');
将返回以下数组:
[
"foo",
"bar"
]
但浏览器强行将其转换为字符串,因为您试图更改其保留变量的typeof
;浏览器对您感到生气。 ,因此字符串值为"foo,bar"
。但是,您可能会在不同的浏览器上获得不同的结果。
对字符串值name[0]
执行"foo,bar"
获取字符串的第一个字母f
答案 2 :(得分:3)
您应该避免使用name
作为变量,因为这是现有的JavaScript内置对象,属性和方法。将变量name
重命名为其他任何内容后,您的代码应该可以运行,请检查代码。
您的var name = ar[0].split(' ');
会返回一个子字符串数组。
var ar = [];
ar[0] = "foo bar";
ar[1] = "dumdumdum";
var changeThisVariableName = ar[0].split(' ');
console.log(changeThisVariableName[0]);
答案 3 :(得分:3)
将它包装在一个函数中,你会得到确切的结果,因为name引用window.name
(function () {
var ar = [];
ar[0] = "foo bar";
ar[1] = "dumdumdum";
var name = ar[0].split(' ');
console.log(name[0]);
})()