为了账号安全,请及时绑定邮箱和手机立即绑定

数组中选取最小值的问题

数组中选取最小值的问题

不负相思意 2019-05-11 09:50:36
在选取数组中最小值的时候,发现如果是下面这样子的代码直接运行在中会有问题。代码1varname=[12,3,65,8,2,12];varmin=name[0];for(vari=1;i
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

这是全局变量导致的,我们知道window在标签里可以直接使用,其实还有很多这样的全局变量,比如:name(默认为空)length(默认为0)
你可能还会纳闷:那第一种写法为什么得到的是1呢,接下来我们分析下你的代码:
//name是在全局里定义的,而name本身就是一个全局变量,而且作为全局变量时只能是字符串,无论赋值什么内容,都会调用name.toString()方法
//所以在for循环之前,name的值是"12,3,65,8,2,12",因为循环只进行了一次,所以结果是1
我们来看第二段代码:
functiontest(){
varname=[12,3,65,8,2,12];//局部变量
varmin=name[0];
for(vari=1;i<=1;i++){
if(name[i]{
min=name[i];
}
}
console.log(min);
}
test();
//在函数内部,name就变成了局部变量,此时可以正常赋值,即for循环之前的值是:[12,3,65,8,2,12],因为循环执行了一次,12<3,所以得到的结果是3
总结:在定义变量时,最好不要使用name,因为全局下name会被转化为字符串。length是可以使用,记得还有其他的全局变量,感兴趣的话自己搜一下吧。
有帮助就点赞哦!
                            
查看完整回答
反对 回复 2019-05-11
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

你可以尝试一下这个方法:`constarr=[1,2,3,4,5,6];
min=100;
for(vari=0;iif(arr[i]min=arr[i];
}
}console.log(min,"这是你想要的结果");`
                            
查看完整回答
反对 回复 2019-05-11
  • 2 回答
  • 0 关注
  • 679 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信