javascript,当它';每当我试图计算参数的平均值时,它都是假的
对于console.log(通过平均值(75,42,98)和(34,93,77,89,49))来说,确实返回了正确的true。但是对于console日志(33,61),当33+61/2没有明显高于49时,它会出于某种原因自动返回true,而它应该返回false。原因可能是什么?这是因为没有按预期传递数组。javascript,当它';每当我试图计算参数的平均值时,它都是假的,javascript,Javascript,对于console.log(通过平均值(75,42,98)和(34,93,77,89,49))来说,确实返回了正确的true。但是对于console日志(33,61),当33+61/2没有明显高于49时,它会出于某种原因自动返回true,而它应该返回false。原因可能是什么?这是因为没有按预期传递数组。传递平均值(33,61)传递两个参数 如果您希望函数具有与您在提供的示例中定义的签名相同的签名,则应按如下方式调用它: console.log('passingAverage(75,42,98)
传递平均值(33,61)
传递两个参数
如果您希望函数具有与您在提供的示例中定义的签名相同的签名,则应按如下方式调用它:
console.log('passingAverage(75,42,98) returns: ' + passingAverage(75,42,98));
console.log('passingAverage(34,93,77,89,49) returns: ' + passingAverage(34,93,77,89,49));
console.log('passingAverage(33,61) returns: ' + passingAverage(33,61));
console.log("\n");
如果要调用函数,如passingAverage(33,61)
,则函数的定义如下:
passingAverage([33,61]); // pass an array of elements
函数passingAverage(){//没有参数,我们将使用参数数组
var n=arguments;//为每个函数定义参数它是传入的所有参数的数组
var平均值=0,i;
对于(i=0;i if((average/n.length)这是一个很好的例子,说明了为什么最好使用而不是console.logs来调试代码。您的函数总是返回true
,因为您的平均值总是:
函数传递平均值(n){
var平均值=0,i;
对于(i=0;i console.log('passingAverage(33,61)返回:'+passingAverage(33,61));
使用参数来循环所有的函数参数,无论其长度如何
function passingAverage(){ // no arguments, we will use the arguments array
var n = arguments; // arguments is defined for every function it's an array of all the arguments passed in
var average = 0, i;
for (i=0; i < n.length; i+= 1){
average += n[i];
}
if ((average/n.length)<49)
return false;
else
return true;
}
// then call the function like this
passingAverage(1, 65, 23, 22); // without using an array
函数传递平均值(){
var平均值=0,i;
对于(i=0;i 如果((average/n.length)向函数传递多个参数,但仅使用第一个参数,则函数需要一个数组,但传递的是一些单独的数字。对于passingAverage(75,42,98),n
将等于75,n.length
将等于未定义的
,平均值将保持在0,您的状况(0/未定义)<49
的计算结果为NaN<49
,它的计算结果总是为false。因此,总是返回true。这是一个错误。您传递了一些数字,但试图将其视为数组。传递数组或只写函数passingAverage(…n)这个问题实际上是一个应该如何调试问题的示例。如果您查看在函数中收到的n
,您会立即看到问题。那么我如何使我的函数接受与console.log语句的参数数量相匹配的未知数?
function passingAverage(){ // no arguments, we will use the arguments array
var n = arguments; // arguments is defined for every function it's an array of all the arguments passed in
var average = 0, i;
for (i=0; i < n.length; i+= 1){
average += n[i];
}
if ((average/n.length)<49)
return false;
else
return true;
}
// then call the function like this
passingAverage(1, 65, 23, 22); // without using an array
function passingAverage() {
var average = 0, i;
for (i = 0; i < arguments.length; i++) {
average += arguments[i];
}
if ((average/n.length)<49)
return false;
else
return true;
}