0

所以我有这个简单的脚本,它用一个数组填充一个变量。然后,我使用带有 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));

该函数返回一个包含所有数组值的字符串,但第一个值 = 未定义。见小提琴:http: //jsfiddle.net/vcyum/

这是为什么?

4

4 回答 4

1

一个更简单的解决方案:

var colorArray = ["brown", "blue", "green"];
alert(colorArray.join('')); // "brownbluegreen"
alert(colorArray.join(',')); // "brown,blue,green"
于 2013-09-18T11:10:27.233 回答
1

c变量的初始值为undefined。下一行将c += 'stuff'字符串添加'stuff'到 中的值c。由于 c 的初始值为undefined,因此将其强制转换为字符串,结果为'undefined',因此 的值为cnow '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(''));
于 2013-09-18T11:10:39.140 回答
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('').

于 2013-09-18T11:06:41.037 回答
0

在您的循环中,您声明c,但不为其分配任何内容。因此,该变量具有“价值” undefined。现在,如果您向其中添加一个字符串,则将其undefined装箱为一个字符串,并且您添加的字符串将附加到该字符串中。

无论如何:这里不需要循环:使用colorArray.join('');相同的结果。

于 2013-09-18T11:10:59.490 回答