这叫函数柯里化,直接引用变量名
action(love, "tom");
action(hate, "tom");

解决方案 »

  1.   

    如果需要传入字符串,那么使用映射就OK
    var action = function (myaction, name) {
        var dict = {
            "love": love,
            "hate": hate
        };    dict[myaction](name);
    }
    action('love', 'Rattz');
      

  2.   

    <script>
    var love = function(name){
    alert("I love " + name);
    }var hate = function(name){
    alert("I hate " + name);
    }var action = function(myaction, name){
    eval(myaction + "(name)");
    }action("love", "girl");
    </script>
      

  3.   

    <script>
    var love = function(name){
    alert("I love " + name);
    }var hate = function(name){
    alert("I hate " + name);
    }var action = function(myaction, name){
    eval(myaction + "('" + name + "')");
    }action("love", "dddddd");
    </script>也可。
      

  4.   

    感谢几位的解答,Jusfr的答案对我启发很大,JS的写法相当灵活,初期非常不喜欢,渐渐地感觉到了弱类型的语言的威力。
      

  5.   

    Jusfr说的很对,JS中一切皆对象,对象的“属性”(也是对象)都可以通过下标获取。
    xie_yanke也给出了非常好的办法,eval就是这么使用的。
    个人认为xie_yanke的方法更正规,更适合作为答案。
    函数柯里化没试过结果如何
      

  6.   

    var love = function(name){
    alert("I love " + name);
    }var hate = function(name){
    alert("I hate " + name);
    }var action = function(myaction, name){
    myaction(name);
    }// 执行的方法
    action(love, "tom");
    action(hate, "tom1");