仅Chrome中函数实参与形参发生关联

Chrome中也有不少 Bug ,但更新修复速度极快。下面又发现一个有趣的现象函数实参与形参发生了关联。

function func(x,y){
	//alert(x);
	arguments[1] = 5;
	alert(y); // --> 5
}	
func(3);

IE6/7/8/9,Firefox,Safari, Opera中 y 弹出为undefined,Chrome 则为5。

函数func定义了形参x,y;调用时实参为3。func内部修改了实参arguments[1],非Chrome浏览器中形参y不会与arguments[1]关联,即为undefined。Chrome则相反,修改arguments[1]同时即修改了形参y。


修改形参y,实参arguments[1]在Chrome中同样被修改,即相互关联。

function func(x,y){
	//alert(x);
	y = 6;
	alert(arguments[1]); // --> 6
}	
func(3);

 

2012-10-23:Chrome22测试,已不存在这个问题。重新总结如下:

1,调用时实参与定义时形参数量一致时,实参与arguments互相影响,修改其中的一个其对应的也会被修改。

2,实参与形参数量不一致时,不关联,不互相影响。

 

posted on 2011-03-17 16:50  snandy  阅读(2088)  评论(2编辑  收藏  举报