簡體   English   中英

為什么我的 function 總是返回未定義?

[英]Why does my function keep coming back as undefined?

這是我的代碼。 我對 javascript 還是很陌生,所以我不明白為什么添加 function 會阻止 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
}

然后調用 incrementByOne function

incrementByOne(arr);

您也可以使用 map :

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));

Output:

$ 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));

Output:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM