你的位置:首页 > Java教程

[Java教程]解析Funtion()构造函数

函数定义方法多种  : 

     1function f(x){     (语句编制函数)       2  函数直接量直接生成                               3  Function()构造函数 

               return  x;                             var f=function(x){return x;}                          var f=new Function(){"x","return x;"} 

                         }  

     var n=1;                                            var n=1;                                                            var n=1;  

      function f(){                                         function f(){                                                         function f(){

           var n=2;                                                var n=s;                                                                var n=s;   

           function e(){ return n;}                          var e= function(){return n;}                                     var e=new Function(){return n;}

          return e;                                                return e;                                                                 return e;

                     }                                                        }                                                                    }

      alert(f()());返回2    (            函数作用域              )    alert(f()());返回2                                                 alert(f()()); 返回1(顶级作用域)

从解析机制来说:javascript在解释代码时,并非一行一行的解析和执行,他会一段一段的分析执行<script></script>,再同一段代码中首先提前function语句函数和函数直接量定义的函数,优先执行,执行完之后才会接着执行其他代码。而Funtion()构造函数不会提前执行,是在运行时执行,所以他拥有顶级作用域,而不会被限制在函数本身,

从时间角度看,Function()构造函数具有动态特性,

这样也会带来缺点,从执行效率看,当把1,2函数和3函数放在循环结构时,1,2函数只需要解析自己直接执行,而3每次执行都需要动态编译一次,效果明显。

由于Function()构造函数不需要额外变量,他们直接在表达式中参与运算,从而节省资源,这些函数运行完毕即被释放。

 

若有错误,欢迎讨论!