所以我有这个简单的脚本用数组填充变量。然后我使用带有for循环的函数来迭代通过数组来获取它的索引值。
function printAllArrayValues(array) {
for (var i = 0; i < array.length; i++) {
var c;
c += array[i];
}
return c;
}
var colorArray = ["brown", "blue", "green"];
alert(printAllArrayValues(colorArray));
该函数返回一个包含所有数组值的字符串,但第一个值= undefined。请参阅小提琴:http://jsfiddle.net/vcyum/
为什么?
答案 0 :(得分:1)
更简单的解决方案:
var colorArray = ["brown", "blue", "green"];
alert(colorArray.join('')); // "brownbluegreen"
alert(colorArray.join(',')); // "brown,blue,green"
答案 1 :(得分:1)
c
变量的初始值为undefined
。
下一行c += 'stuff'
将字符串'stuff'
添加到c
中的值。由于c的初始值为undefined
,因此会将其转换为字符串,结果为'undefined'
,因此c
的值现为'undefinedstuff'
。
您的代码可以像这样修复:
function printAllArrayValues(array) {
var c = '';
for (var i = 0; i < array.length; i++) {
c += array[i];
}
return c;
}
var colorArray = ["brown", "blue", "green"];
alert(printAllArrayValues(colorArray));
或更简单:
var colorArray = ["brown", "blue", "green"];
alert(colorArray.join(''));
答案 2 :(得分:0)
要修复您的错误,您可以更改
for(var i = 0; i < array.length; i++){
var c;
到
var c = '';
for(var i = 0; i < array.length; i++){
这样就不会在第一次迭代时添加undefined
(在字符串连接中转换为"undefined"
)。
但您也可以使用colorArray.join('')
替换整个功能。
答案 3 :(得分:0)
在你的循环中,你声明c
,但不指定任何内容。因此变量具有'值'undefined
。现在,如果您向其中添加一个字符串,undefined
将被装入一个字符串中,您添加的字符串将被附加到该字符串中。
无论如何:这里不需要循环:使用colorArray.join('');
获得相同的结果。