解析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()构造函数不需要额外变量,他们直接在表达式中参与运算,从而节省资源,这些函数运行完毕即被释放。
若有错误,欢迎讨论!
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()构造函数不需要额外变量,他们直接在表达式中参与运算,从而节省资源,这些函数运行完毕即被释放。
若有错误,欢迎讨论!
相关文章推荐
- php fopen()和file_get_contents() 区别介绍
- leetcode196-Delete Duplicate Emails(删除重复并且id较大的数据)
- 新建git,不能git push
- 算法_ LongestPalindromicSubstring
- 获取java项目的根目录-方法大全
- Android课程---优化ListView列表视图
- IOS开发UI系列之常用控件 UILabel, UITextField, UIButton, UIImageView等常用属性与方法
- hibernate自身一对多和自身多对多映射详解
- kvm 虚拟化 virt-clone 克隆虚拟机
- leetcode 263. Ugly Number
- MS-Sqlserver的Timestamp不可转换成Datetime
- 算法导论----<二分法改进递归插入算法>及实例
- 【剑指offer系列】 二叉搜索树的后序遍历系列___24
- ListView滑动流畅性优化
- JAVA基础--日期处理
- JdGrid树形表格分页
- 环形队列的实现原理
- Swift之 ? 和 !
- 【VLC核心一】播放流程梳理->live555收流+ffmpeg:AVCodec解码
- 算法导论----<递归插入>及实例