f3(f1) 
function f1() {
  var funcName = 'f1';

function f2(){ 
  var funcName = 'f2';

function f3(f){ 
   alert(typeof(f));
   alert(f.funcName); 
}

解决方案 »

  1.   

    那就直接传函数名就可以了
    f3("f1");
    function f3(funcName){
       alert(funcName); //显示名字
       eval(funcName + "()"); //调用
    }
      

  2.   


    function CC(){}
    function DD(callback){
    var str=callback.toString();
    alert(str.substring(str.indexOf("on")+3,str.indexOf("(")));
    }
    DD(CC);
    2楼的建议很好哦~
      

  3.   

    1楼的方法可以,但没个函数都要添加funName属性.javascript自己有没实现的机制呢,像typeof一样
      

  4.   

    f3(f1) 
    function f1() 
    {} 
    function f2() 
    {} function f3(f) 

        if(typeof f == 'function'){
           alert('是函数');
           alert(arguments.callee[0].name);
        }
        else
            alert('不是函数');

      

  5.   


    <script language=javascript>
    function f(){};
    function getName(){
    if(typeof arguments[0] == "function"){
      return arguments[0].prototype.constructor.toString().replace(/^function\s+(\w*[^\s(]*)([\s\S]*){[\s\S]*}$/,"$1")||"unNamed function";
    }else alert("is not a function");
    }
    var x =  function (){};
    alert(getName(x));
    alert(getName(f));
    </script>
      

  6.   

    5楼我试过,提示arguments.callee.[0].name为空或不是对象
    arguments.callee[0]为undefined
      

  7.   

    arguments.callee.length的值是1,但arguments.callee[0]为undefined
      

  8.   


    f3(f1) 
    function f1() 
    {} 
    function f2() 
    {} 
    function f3(f) 

       alert(typeof(f)); 
       alert(/function\s([^\(]*)\(/g.exec(f)[1]);}
      

  9.   

    那你用六楼的,我的那个在FF下面是行的,在IE是有错误.