在选取数组中最小值的时候,发现如果是下面这样子的代码直接运行在中会有问题。代码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是可以使用,记得还有其他的全局变量,感兴趣的话自己搜一下吧。有帮助就点赞哦!
慕娘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,"这是你想要的结果");`
添加回答
举报
0/150
提交
取消