老师帮我检查下代码?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>函数的间接调用</title>
</head>
<body>
<script>
// 在此处补充代码
var data = [1, 2, 3, 4];
function multiply(num1, num2, num3, num4) {
return num1 * num2 * num3 * num4;
}
var result = multiply.apply(window, data);
document.write(result);
</script>
</body>
</html>
还有arguments是哪里学的 什么意思?
正在回答
同学你好, 因为不传递参数的时候, arguments.length为0, 不会执行for循环, 所以在for循环里面的判断是不会别执行的, 直接返回默认的sum值1
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>函数的间接调用</title>
</head>
<body>
<script>
// 在此处补充代码
var data = [];
function multiply() {
// if(arguments.length == 0) return;
var sum = 1;
for(var i = 0; i < arguments.length; i++){
if (arguments.length == 0 || isNaN(arguments[i])) return;
sum *= arguments[i];
}
return sum;
}
var result = multiply.apply(window, data);
document.write(result);
</script>
</body>
</html>
老师代码中data = [] 但为什么会输出1 正常应该是undefined呀?
同学你好, 效果实现了,但是习题中要求参数不能一个一个的传入,避免参数多的时候麻烦,可以使用arguments,用循环累乘,参考:
在js基础阶段讲解函数章节中有详细的讲解哦。
课程地址链接:
https://class.imooc.com/lesson/770#mid=19291
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星