有些事情我无法理解。我有以下代码,其目的是获取两个数组的总和。
let r1;
let r2;
let total;
function totalSum(arr_1, arr_2) {
for (let i = 0; i < arr_1.length; i++) r1 += arr_1[i];
for (let j = 0; j < arr_2.length; j++) r2 += arr_2[j];
total = r1 + r2;
return total;
}
let arr_1 = [3, 5, 22, 5, 7, 2, 45, 75, 89, 21, 2]; // --> 276
let arr_2 = [9, 2, 42, 55, 71, 22, 4, 5, 90, 25, 26]; // --> 351
totalSum(arr_1, arr_2);
console.log(`total=${total} r1=${r1} r2=${r2}`);
r1
、r2
和 total
)打印了“NaN”。r1
和r2
之后。它返回了预期的结果。let r1 = 0;
let r2 = 0;
let total;
我的问题是,为什么
r1
和r2
没有初始化就不能得到数组的和?而变量total
即使没有初始化也能得到r1
和r2
的结果?
当你定义一个变量而不赋值时,它的值默认是“undefined”。在这种情况下,您正在尝试使用数字和未定义进行数学运算,这将转换为 NaN