Javascript 使用for of循环计算数组中的多个元素

Javascript 使用for of循环计算数组中的多个元素,javascript,arrays,for-of-loop,Javascript,Arrays,For Of Loop,我是JavaScript的新手,我有一个关于的练习,但是失败了。它返回了NaN 我哪里做错了,我需要什么 代码: var arr=[]; 函数乘法(arr){ 对于(arr的a型变量){ a*=arr[a]; } 返回a; } log(乘法([2,3,4]);//预期:24参见下面修改的代码。现在工作: var arr=未定义; 函数乘法(arr){ 如果(!arr | |!arr.length){//如果数组未定义或没有元素,则返回null 返回null; }//否则,继续计算,它是一个带

我是JavaScript的新手,我有一个关于的练习,但是失败了。它返回了
NaN

我哪里做错了,我需要什么

代码:

var arr=[];
函数乘法(arr){
对于(arr的a型变量){
a*=arr[a];
}
返回a;
}

log(乘法([2,3,4]);//预期:24参见下面修改的代码。现在工作:

var arr=未定义;
函数乘法(arr){
如果(!arr | |!arr.length){//如果数组未定义或没有元素,则返回null
返回null;
}//否则,继续计算,它是一个带值的数组
var result=1;//在1中开始我们的结果
对于(arr的a型变量){
result*=a;//将结果乘以
//数组中每个值的上一个值
}
返回结果;//最终返回
}
log(乘法([2,3,4]);//预期:24
console.log(乘法([]);//expect:null:0个元素
console.log(乘法(arr));//expect:null:arr变量未定义

console.log(multiply());//expect:null:未提供任何参数
您需要在循环外初始化总和并返回总和,而不是现在突然访问范围外项目的数字。首先,arr的
a
本身就是
arr
中的元素。您不需要像
arr[a]
这样获取元素。这是一段非常隐晦的代码
a*=arr[a]
坚持实用主义的基本原则,而不是惯用语。由于您是新手,建议您将此
https://github.com/airbnb/javascript
。PS:我与Airbnb没有任何关联,但发现存储库很好。
const product=array=>array.reduce((factor,term)=>factor*term)这是一个很好的解释,但是我觉得对于空数组,-1不是很正确的答案。未定义或投掷可能更好。如果使用
reduce()
执行此操作,它将抛出一个空数组。@MarkMeyer是的。我不确定空数组使用什么值。现在我将继续使用
null
:)谢谢,莱尔塞德罗!当我删除
var arr=[]时,它仍然有效well@lealceldeiro . 我有个问题。当我没有声明
var arr=[]
时,我的函数仍然知道这是一个数组?为什么?因为我调用函数并传输元素
[2,3,4]
->它明白吗?@HoangDinh是的,你是对的。。。。看,我更新了代码,所以,现在如果提供的值是未定义的null,或者是一个空数组,它将返回
null