您的位置:首页 > 其它

解析Funtion()构造函数

2016-04-09 17:00 337 查看
函数定义方法多种 :

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()构造函数不需要额外变量,他们直接在表达式中参与运算,从而节省资源,这些函数运行完毕即被释放。

若有错误,欢迎讨论!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: