为什么“return”与“console.log()”的工作方式不同

时间:2017-12-29 03:51:34

标签: javascript arrays function

所以基本上,我只是试图将100加到可被3整除的数组test的元素并打印出test数组。我不明白的是,当我在函数中使用console.log(test)时,它打印出满足条件的数组,即100被添加到可被3整除的元素,但是当我在它之外使用它时功能,它没有。这是为什么?有没有办法打印出测试数组,条件在函数外部满足?我刚开始学习javascript,所以我有点像初学者。

var test = [12, 929, 11, 3, 199, 1000, 7, 1, 24, 37, 4,
    19, 300, 3775, 299, 36, 209, 148, 169, 299,
    6, 109, 20, 58, 139, 59, 3, 1, 139
];

test.forEach(function(test){
    if(test % 3 === 0){
        test+=100;
    }
    console.log(test);//prints out test array if condition met
});

//console.log(test); //doesn't print test array with if condition met????

1 个答案:

答案 0 :(得分:1)

forEach方法不直接修改原始数组,但回调函数可能会修改它。回调与元素,索引和数组本身一起传递。

var test = [12, 929, 11, 3, 199, 1000, 7, 1, 24, 37, 4,
    19, 300, 3775, 299, 36, 209, 148, 169, 299,
    6, 109, 20, 58, 139, 59, 3, 1, 139
];

test.forEach(function(item, index, test){
    if(item % 3 === 0){
        test[index] = item+=100;
    }
});

console.log(test);