解决方案 »

  1.   

    1.
    new Function("return"+date)是用字符串为函数内的代码来创建个匿名函数,函数后面的()实际上是执行函数的运算符。这要是用于执行字符串内的代码
    还能写成
    return eval(date);
    2.
    js中的函数和java,C#中的函数不一样
    js中的函数其实是一种数据,与数值,数组和字符串是一样的。
    可以赋值传递给变量,设置属性等
    一个函数后面的()实际上是执行函数的运算符
    所以在赋值传递函数时后面是不加()的
    3.
    自己查“闭包”一词
      

  2.   

    就个人理解说一下看法,欢迎高手们拍砖。
    1.
    rerurn(new Function("return"+date))();
    还可以: rerurn(eval("return"+date))();
    为什么这么写的原因是为了使用系统内置函数对象来构建一个函数,目的就是为了简写某些字符串。
    但不推荐这样做,这样是有风险的:
    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions_and_function_scope
    2.var a = {
            "aaa" : a,
            "bbb" : b,
            "ccc" : c
        }不能写成c()的原因是,c()是一个结果(值),c是一个引用指向(址)。
    而一般写在a里边的是为了让a去得到这个结果,不是ccc这儿就得到结果,比如:a.ccc();而不是a.ccc;
    这是一种习惯,不是一个规则。
    3.function a(){
        function b()
    }一般也可以拆开写,比如function a(){}; function b(){},只所以写在里边的原因,个人猜测是为了保证函数名的唯一或可访问。如果放在外边,有可能会被其它模块代码影响。比如某另外一个.js中也有同样的b名字的函数。
      

  3.   

    http://www.2ality.com/2014/01/eval.html
    这条是送的。
      

  4.   

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions_and_function_scope
      

  5.   

    将函数当做值传递给变量,那么该函数什么时候会调用呢 ?初始化变量,引用变量,还是其它?
    当要执行那个函数的时候,又该怎么写呢?//定义函数
    function a()
    {
    alert(123);
    }//将函数当做值传递给变量
    var b = a;//当要执行那个函数的时候
    b();