我看了一些有关Jquery中each()函数的示例,但有点不明白,就是each()里面的function函数的变量名是不是随便写什么都可以,我看了几个例子://例子1
 var arr = [ "one", "two", "three", "four"];     
 $.each(arr, function(){     
    alert(this);     
 });   //例子2
var arr1 = [[1, 4, 3], [4, 6, 6], [7, 20, 9]]     
$.each(arr1, function(i, item){     
   alert(item[0]);     
}); 
//例子3
var obj = { one:1, two:2, three:3, four:4};     
$.each(obj, function(key, val) {     
    alert(obj[key]);           
}); //例子4
$("img").each(function(i){
   this.src = "test" + i + ".jpg";
 }); 
如上面的4个例子,each()括号里的function中的参数,有的是i,item,key,val,这些参数有什么特殊么?我可不可以随便取名啊,比如:a,b,c等,真搞不明白呢,请大侠帮帮忙………………………………………………

解决方案 »

  1.   

    形参啊 ,可以随便设置。function(索引值,对应值){}
      

  2.   

    可以任意起名。即使在each函数中传递三个参数也不会出错。当然如果访问不存的变量是会报错的。
    其实在js中向函数传值实际上是传递一个arguments对象。
    所以下面的例子,虽然不使用index,element也一样可以访问向函数中传递的值。
    不过建议使用jquery api的文档写参数名,因为那样更能显示出参数的含义<script type="text/javascript">        var arr = ["a", "b", "c"];
            $.each(arr, function (index, element) {
                alert(arguments[1]);
            });
          
        </script>
      

  3.   

    jquery把你关心的问题都考虑了。
    each数组时因为数组能用[索引]的方式访问,给你传两个参数:索引和值,够用了吧
    each Json对象时因为json能通过 obj.key的形式读取单项,所以给你传两个参数:key和值,够用了吧
    不传参数?至少有个this指向单项
    太tmd人性化了,顺着它的思路想想。
      

  4.   

    这个问题和jQuery没有关系,如下函数实现都是同一种功能:var add1 = function (a, b) {
        return a + b;
    };var add2 = function (x, y) {
        return x + y;
    };var add3 = function () {
        return arguments[0] + arguments[1];
    };函数的功能又不是函数名和参数名决定的,这些命名只是方便人阅读,增加代码可读性,对于机器来说无所谓。函数作为变量和调用参数,函数名及其参数名完全可以忽略,使用方也获取不到参数名。