解决方案 »

  1.   

    return f;//你想要return 一个函数,就不要写()
      

  2.   

    先定义一个f函数 不管他是做什么的  之后执行f  此时重写f 这是f是一个返回t对象的函数 返回f的执行结果 即返回t
      

  3.   

    你这个代码有问题var f=function(){
      var t=new Date();
      var f=function(){//这里要用var把F声明成局部变量,不然就是重定义了全局的f函数
        return t;
      }
      return f;//你想要return 一个函数,就不要写() 
    }
    var e = f();
    alert(e());
      

  4.   


    谢谢,
    我是在一本书上看到的这样一个例子,书上是这样解释的:函数f的首次调用将实例化一个新的Date对象并重置f到一个新的函数上,f在其闭包内包含Date对象。在首次调用结束之前,f的新函数值也已被调用并提供返回值。函数f的调用都只会简单的返回t保留在其闭包内的值,这样执行起来非常高效。
    没看懂
      

  5.   

    哦,原来是这样的要求啊,那你这个代码就没有问题了。
    f ()不管是首次调用还是再次调用就是要求返回t的值,没有要求返回一个函数。只不过在首次调用时f函数会重新定义自身
    这个代码也可以改成如下var f=function(){
      var t=new Date();
      f=function(){
        return t;
      }
      return t;
     }
    f();