jquery$("#start").click(function(){
});
比如类似这样的写法 参数就是一个函数体。怎么理解这种写法?通常角度上来说,怎么可以用函数体来作为参数呢?
对$("#start")的click操作会引发这个函数体的执行?
不理解 总是感觉很陌生

解决方案 »

  1.   

    function foo(a){}这样你理解吧,执行函数后还不是返回值吗?
    把函数写成参数,和变量写成参数不是一样吗实际上函数就是一变量function fa(){}
    和 var fa=function(){}
    写法完全一样
      

  2.   

    学一门语言,语法是基础,是底层开发者定义的规范,jquery同样也是,如果你技术牛X了,你也可以自己写个js库,你想用啥样的写法都行!楼上分析的很对,这跟js奇怪的语法有关系
      

  3.   

    或者还有个迷惑是,为什么非要传function(){},而不是其它的什么的。
    因为在内部实现是这样的:function foo(arg){
        return arg();
    }
    function bar(name){
        console.log('hi, ' + name);
        /*
        return function(){
            console.log('hi, ' + name);
        }
        */
    }
    //foo(bar('豪情'));
    foo(function(){
        bar('豪情');
    });
    foo(bar);所以我们必须采取那种跟作者约定的写法,才能使用框架本身提供的其它功能。
    你也可以试一下注释掉的那种写法。
      

  4.   

    发错了,上面代码中
    foo(bar); 
    也应该注释。
      

  5.   

    楼上的意思是,var fun = function(){...};然后传函数为参数就等同于传一个普通的变量,只不过它省去了我写的那一步,而是直接用所谓的“匿名函数”
      

  6.   

    function click(fun){
    fun();
    }click(function(){alert("fun");});
      

  7.   

    foo(function(){      bar('豪情');  }); 
    這個地方怎麼理解啊
    怎麼會返回"hi,undefined"呢
      

  8.   

    那块有笔误,应该是这样的:function foo(arg){
        return arg();
    }
    function bar(name){
        console.log('hi, ' + name);
    }
     foo(function(){
        bar('豪情');
     });
      

  9.   

    setTimeout(test, 1000);function test(){
        ...
    }这个应该理解的了把,当然了你可以将test方法放到上面那句test处