老师这样写错在哪里?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function test(){
if(arguments.length==0)return console.log("无参数");
for(var i=0;i<arguments.length;i++){
var mins=0;
if(mins<=arguments[i]){
mins=mins;
}else{
mins=arguments[i];
}
}
return mins;
}
var datas=[2,4,1,-1,56,3,-7,-8,0];
console.log(test.apply(window,datas));
</script>
</body>
</html>
正在回答 回答被采纳积分+1
同学你好,问题解答如下:
当设置mins=0时,在for循环中,每次循环都会为mins设置初始值为0,无法保存上一次判断的结果,所以test最终返回的结果就是0与参数的最后一项的判断结果,如果0小于最后一项,就返回0,0大于最后一项,就返回最后一项。
当不给mins设置初始值时,由于预解析,“ var mins”这句代码会被提前:
当i=0时,此时不会执行“ var mins”了(已经被提前),会直接进行判断,由于mins没有初始值,满足else的条件,所以执行else中的语句,此时mins=2(等于参数的第一个)
当i=1时,由于2<4,所以重新给mins赋值为mins(自己等自己),即mins还等于2。
当i=2时,此时2<1,执行else语句,给mins赋值为当前参数,即mins=1。
依次类推,最终得到了最小值。
这样实现,思路略微有点复杂,可做如下修改:
另外当参数长度为0时,页面会打印如下:
所以继续修改如下:
如果我的回答帮到了你,欢迎采纳,祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星