关于javascript中的for in 和 for的用法

今天上QQ, 一哥们就来问我一个问题。

看了一眼,差不多知道其中的错误原因了,在与forfor in 的误用。

接下来,我把他的问题发给大家看,顺便大家来猜猜结果。



大家一看,可能就知道这个函数的功能是用来获取最大值的,你们可能就疑惑了,干嘛不用sort()...-.- 好吧,咱们就事论事就是了..


估计有的童鞋会说弹出来的值是100吧?

好吧,其实他弹出来的是6....

为什么呢? 这不科学啊!!!!

其实,这就是没用好for的原因。

通常来讲, 一般循环数组用的是for,而循环对象用的是for in.

大家都知道,arguments是一个类数组对象,说白了,也是个对象.

然后呢??

比如说, arguments[1] 代表什么东西?

第一, 他代表的可能代表该对象中第二个属性的值对吧?

第二, 他也可以代表属性为1的值对吧?

所以问题就来了。这个东西应用到上面的例子中,就会出现bug。


怎么解决? 很简单, 把for 改为for in就行啦。 接下来就是我改过之后的代码:

function max()
{
	var a=1;
	for(var i in arguments){
		if(arguments[i]>a){
			a = arguments[i];
		}
	}
	return a;
}
 var b=max(2,58,1,5,100,6)
 alert(b)


其他内容不变,就是for 改为 for in 而已。

大家只要记住,在javascript中,循环数组用for循环,循环对象尽量用for in循环就行啦。


你可能感兴趣的:(关于javascript中的for in 和 for的用法)