似乎我最初的问题已经解决,但该函数仅返回第一个子数组的总和。我不明白为什么函数外部的第一个 for 循环返回所有子数组的总和,但函数本身只返回第一个子数组的总和。我想它会再次循环每个子数组并将所有数字加在一起:
function loop(){
for(let i =0; i < numSquare.length; i++){
let loop1 = numSquare[i];
let sum = 0;
console.log(loop1)
for(let k=0; k< loop1.length; k++){
sum += loop1[k]
}
return (`${sum}`);
}
}
在练习通过多数组循环时,我创建了一个函数来存储下面的循环值,但变量“loop2”在 Visual Studio 代码中显示为灰色,表示它未定义,即使我已经定义为等于 numSquare [我]?我正在尝试创建一个函数,因为第一部分无需在函数中即可工作。
我是不是做错了什么?
const numSquare = [
[1,2,3],
[4,5,6],
[7,8,9]
];
for (let i = 0; i < numSquare.length; i++) {
let loop1 = numSquare[i]
let sum = 0;
console.log(loop1)
for (let k = 0; k < loop1.length; k++) {
sum += loop1[k]
}
console.log(`${loop1} summs up to be ${sum}`)
}
//This one does not work because it is telling me loop2 is NOT defined but clearly is defined?
function loop(){
for(let i = 0 ; i< numSquare.length; i++){
let loop2 = numSquare[i]
let sum2 = 0;
for(let k=0; k< loop2.length; k++){
sum2+= loop2[k]
}
}
return console.log(`${loop2} sums up to be ${sum2}`)
}
最佳答案
由于您使用 let 定义变量,因此它具有 block 作用域,并且您尝试在控制台中访问不同的作用域
function loop(){
for(let i = 0 ; i< numSquare.length; i++){
| let loop2 = numSquare[i] <--- loop2
| let sum2 = 0;
| for(let k=0; k< loop2.length; k++){
| sum2+= loop2[k]
| }
}
// out of block so loop2 is not accessable
return console.log(`${loop2} sums up to be ${sum2}`)
}
关于javascript - 变量在函数中灰显,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60956690/