回调函数终止外环

时间:2015-06-17 19:49:18

标签: javascript

var items = ['1', '2', 'callback', '4'];

var testCallback = function (item, items) {
    var outputArray = [];
        if (item == 'callback') {
            for (i = 0; i < items.length; i++) {
            outputArray.push(testCallback('5', items));
            console.log(outputArray);
            };
        } else {
            outputArray.push(item);
        };

    return outputArray.join(',');
};

var testFunction = function (items) {
    var output = '';
    for (i = 0; i < items.length; i++) {
        console.log(i);
          output += testCallback(items[i], items);           
    };

    console.log(output)   
};

testFunction(items);

以下是fiddle示例。

我希望输出为125,5,5,54(5,5,5,5取代'回调')。但是for语句(在testFunction()中)在'callback'之后终止,并且不继续到items []中的最后一项,输出是125,5,5,5。

非常感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:5)

您的i循环变量是全局的,因此它在两个函数中共享。

按如下方式更改每个for循环:

for (var i = 0; i < items.length; i++) {

Fiddle

根据预期,最终输出为125,5,5,54