javascript - 在Javascript中传递给函数的数组变量变得未定义
问题描述
抱歉,如果以其他方式询问过这个问题,但我今天缺少我的 google-fu。我今天刚开始学习 Javascript,但在将数组传递给函数时遇到了问题。我正在尝试在每个索引处添加两个数组的值,但是当 sololearn 的代码游乐场尝试在第二个函数中读取 arr1 的长度时,它给了我一个错误:“未捕获的类型错误:无法读取未定义的属性‘长度’” .
我尝试将迭代器更改为“i <=6”,但它告诉我它无法读取“sum [i] ...”行未定义的索引 0 处的属性。我也尝试过用 var 而不是 let 来声明数组。
谁能告诉我为什么数组没有正确传递给函数?
function generateStats(){
let race = "halfOrc";
const halfOrc = [2,1,0,0,0,0];
let stats = [0,0,0,0,0,0];
switch(race){
case "halfOrc":
stats = sumArray(stats,halfOrc);
break;
//more code
}
function sumArray(arr1,arr2){
var sum = [];
for (let i = 0; i <= arr1.length;) {
sum[i] = arr1[i] + arr2[i];
i++;
return sum
}
}
解决方案
例如,长度为 2 的数组具有 0 和 1 的有效索引,因此,与 array.length 进行比较时,切勿使用 <= -
你也在 for 循环中返回,所以只有第一次迭代会运行——
快速修复...更改i <=
并i <
移动到return sum
后}
移动i++
到 for 循环行。
这是您的代码 - 现在可以使用
function generateStats() {
let race = "halfOrc";
const halfOrc = [2, 1, 0, 0, 0, 0];
let stats = [0, 0, 0, 0, 0, 0];
switch (race) {
case "halfOrc":
stats = sumArray(stats, halfOrc);
break;
//more code
}
console.log(stats);
}
function sumArray(arr1, arr2) {
var sum = [];
for (let i = 0; i < arr1.length; ++i) {
sum[i] = arr1[i] + arr2[i];
}
return sum
}
generateStats();
推荐阅读
- react-native - 反应原生从本地存储上传视频
- java - 如何处理“事务仅标记为回滚;无法提交;”的问题?
- linux - apt-get install g++-arm-linux-gnueabihf时如何选择gcc版本
- codeigniter-3 - 我有一条错误消息,例如找不到此类“MY_Controller”
- docker - 修改 grafana 查询跳过一个 docker 容器
- rust - 如何要求两个特征的关联类型相同?
- aws-sdk - IAM 角色 ARN Rekognition 创建流处理器
- html - 使用 Reactjs 访问远程 html 文件
- octobercms - 将复选框值保存到数据库 [ octobercms ]
- android - Apk 大小与下载大小