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

若有错误,欢迎讨论!

时间: 2024-11-05 02:18:56

解析Funtion()构造函数的相关文章

将Lambda表达式作为参数传递并解析-在构造函数参数列表中使用Lambda表达式

public class DemoClass { /// <summary> /// 通过Lambda表达式,在构造函数中赋初始值 /// </summary> /// <param name="propertyFunc"></param> /// <param name="propertyValue"></param> public DemoClass (Expression<Func&

moon 01/14 javascript -- Funtion类型

[javascript 高级程序设计  第5章  page 110]  5.5  Function类型-------函数是对象   函数名是引用/指针: 函数是对象.因此函数名实际上也是一个指向函数对象的指针.不会与某个函数绑定. 每个函数都是Function 类型的实例,与其它引用属性一样具有属性和方法. 创建函数的方法: 1.使用函数声明语法定义的   即使用function定义  函数名是必须的例如 function sum (sum1,sum2 ){ return sum1+sum2;

Sun考试认证题目解析(强力推荐,巩固基础)

转载请注明出处:http://www.ming-yue.cn/java-basic/. 1,给定以下代码,求j的值. public class Test { public static void main(String[] args) throws Exception { int i = 0xFFFFFFF1; int j = ~i; } } A. 0 B. 1 C. 14 D. –15 E. An error at line 3 causes compilation to fail. F. A

进击JavaScript核心 --- (2)函数和预解析机制

一.函数 每个函数都是 Function类型的实例,也具有属性和方法.由于函数也是一个对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定 1.函数的定义方式 (1).函数声明 function add(a, b) { return a + b; } 函数声明提升:在执行代码之前,会先读取函数声明,也就是说,可以把函数声明放在调用它的代码之后 fn(); // 1 function fn() {console.log(1)} (2).函数表达式 var add = functio

Spring IoC源码解析之getBean

一.实例化所有的非懒加载的单实例Bean 从org.springframework.context.support.AbstractApplicationContext#refresh方法开发,进入到实例化所有的非懒加载的单实例Bean的finishBeanFactoryInitialization(beanFactory)的方法: protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory bea

Spring IOC 容器源码分析 - getBean调用方法解析(三) -- 实例化 Bean 对象

1. createBeanInstance protected BeanWrapper createBeanInstance(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) { // 解析 bean ,将 bean 类名解析为 class 引用 Class<?> beanClass = resolveBeanClass(mbd, beanName); /* * 检测类的访问权限.默认情况下,对于非 public

网站前端_JavaScript.0011.JavaScriptFunction

函数类型: 说明: Function类型实际上是对象,每个函数都是Function类型的实例,而且都与其它引用类型一样具有属性和方法,由于函数是对象,因此函数名实际上也是一个指向函数对象的指针 //函数声明 //        - 普的函数声明 var max = function(x, y){     return x>y?1:(x==y?0:-1) } console.log(max(1, 2))           - 使用Function构造函数 var func= new Functi

JavaScript Function 函数深入总结

整理了JavaScript中函数Function的各种,感觉函数就是一大对象啊,各种知识点都能牵扯进来,不单单是 Function 这个本身原生的引用类型的各种用法,还包含执行环境,作用域,闭包,上下文,私有变量等知识点的深入理解. 函数中的return return 语句可以不带有任何返回值,在这种情况下( return; 或函数中不含 return 语句时),函数在停止执行后将返回 undefiend 值.这种用法一般在需要提前停止函数执行而又不需要返回值的情况下. return false

Promise笔记

首先,让我们认识以下什么是Promise: 所谓Promise,就是一个对象,用来传递异步操作的消息,它代表了某个未来才会知道结果的事件. 听起来有些不知所谓,那么首先,console一下吧~ console.dir(Promise) 可以看出它是一个构造函数,拥有accept.all等属性,prototype中有catch.chain.then等方法,这意味着其实例也将拥有这些方法~ 接下来创建一个试试 var p = new Promise(function(resolve, reject)