2-23作业请老师检查,并答疑,谢谢。
来源:2-23 编程练习
慕桂英1122475
2023-03-22 11:19:41
如果按在调用函数时,预置好数值的方法是可以输出结果的。代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
var sum = 0,
i = 0,
input;
function avg() {
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum / arguments.length;
}
var result = avg(2, 3, 4, 5, 6); //4
document.write(parseInt(result));
</script>
</body>
</html>然而想挑战一下,通过计算用户在对话框输入的数字时,就没有成功,想请教:
1、我猜测可能是调用join方法的时候,将数组转成了一整条字符串,所以没有办法计算平均值?
2、函数参数是不会自动进行Number转化后再进行运算的是么?
3、然而我在 var result = avg(str);处改为 var result = avg(Number(str));仍然页面输出的是NaN
2、有无更好的方法,实现调用函数,求用户输入的数字的平均值?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
var sum = 0,
i = 0,
input,
arr = [];//设定一个空数组用于存储输入的数字
function avg() { //定义一个返回平均值的函数
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum / arguments.length;
}
//通过while函数弹窗,用户输入数字后,存入arr数组
while (input !== null) {
input = prompt("请输入数字,按取消退出");
arr.push(input);
}
//将arr数组转为字符串,中间默认逗号隔开
var str = arr.join();
//将字符串的值作为arguments调用avg函数
var result = avg(str);
console.log(str);//输入2,3,4;控制台输出2,3,4
document.write(parseInt(result));//结果不如预期,是NaN
</script>
</body>
</html>1回答
好帮手慕久久
2023-03-22
同学你好,解答如下:
1、第一种方式代码是对的。
2、第二种方式问题很多,调整如下:
a)输入框没法终止,输入“退出”无效。调整如下:

b) avg的参数是一个个数字,不是连在一起的字符串:

同学的写法属于“自创”,不符合语法要求。
c)prompt接收到的内容是字符串形式,直接参与+运算,会有问题,需要转成数字:

d)将[1,2,3]这个数组中的数字依次传给avg,可以使用展开运算符...:

...这个运算符,后面的课程会讲,暂时了解即可:

3、字符串形式的数字,不会自动转成数字再参数加运算,比如"123"+"345"不是数字123加上数字345。
祝学习愉快!
相似问题