为什么我的函数总是返回未定义的状态?

Why does my function keep coming back as undefined?

这是我的代码。我对 javascript 还是很陌生,所以我不明白为什么添加函数会阻止 for 语句递增整数。

const arr = [10,10,16,12]

function incrementByOne(arr) {
  // arr is an array of integers(numbers), Increment all items in the array by
  // return the array


for (const i = 0; i < arr.length; i++){
  arr[i] += 1;

  
}
return arr
}

如有任何帮助,我们将不胜感激。

你应该使用 let i = 0 而不是 const i= 0 来初始化循环迭代计数器 i

const arr = [10,10,16,12]

function incrementByOne(arr) {
  // arr is an array of integers(numbers), Increment all items in the array by
  // return the array


for (let i = 0; i < arr.length; i++){
  arr[i] += 1;

  
}
return arr
}

然后调用increment By One函数

incrementByOne(arr);

您也可以使用地图:

const incrementByOne = (arr) => arr.map((element) => element + 1);
const arr = [10,10,16,12]

function incrementByOne(arr) {
    // arr is an array of integers(numbers), Increment all items in the array by
    // return the array


    for (let i = 0; i < arr.length; i++){
        arr[i] += 1;
    }
    return arr
}
let a = incrementByOne(arr)
console.log(a)

我运行你的代码在Node.js下:

代码:

'use strict';

const arr = [10,10,16,12]

function incrementByOne(arr) {
    for (const i = 0; i < arr.length; i++) {
      arr[i] += 1;
    }
    return arr
}

console.log(incrementByOne(arr));

输出:

$ node incr.js
incr.js:6
        for (const i = 0; i < arr.length; i++){
TypeError: Assignment to constant variable.
    at incrementByOne (incr.js:6:37)
$

如您所见,它抱怨您正在尝试更改 i 的值,您的代码表示该值是常量。写 let i = 0 为非常量值。

代码:

'use strict';

const arr = [10,10,16,12]

function incrementByOne(arr) {
    for (let i = 0; i < arr.length; i++) {
      arr[i] += 1;
    }
    return arr
}

console.log(incrementByOne(arr));

输出:

$ node incr.js
[ 11, 11, 17, 13 ]
$