码迷,mamicode.com
首页 > 其他好文 > 详细

高阶函数与执行上下文

时间:2019-11-30 19:31:17      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:内部函数   全局对象   并且   style   arguments   private   window   vat   ext   

高阶函数与执行上下文

高阶函数满足条件(任意一个即可):1、接受一个或多个函数作为输入。

                                                    2、输出一个函数。

闭包满足条件(必须全满足):1、一个函数中要钱讨一个内部函数,并且内部函数要访问外部函数的变量。

                 2、内部函数要被外部引用。

例:function eat(){ 

  var food = ‘鸡翅‘; 

  return function(){   

    console.log(food); 

  }

}

var look = eat();

look(); // 鸡翅

look(); // 鸡翅

闭包的优缺点:

优点:1:变量长期驻扎在内存中;

                  2:避免全局变量的污染;

                  3:私有成员的存在 ;

缺点:常驻内存 会增大内存的使用量 使用不当会造成内存泄露。

  

执行上下文的生命周期包含2个阶段:建立阶段和执行阶段。

JavaScript中执行环境:

1、全局环境   2、函数环境  3、eval函数环境(已不推荐使用)

执行上下文类型为:1、全局执行上下文   2、函数执行上下文  3、eval函数执行上下文

建立阶段例:

fooExecutionContext = {

variavleObject : {

arguments : {

0 : 10,length : 1

},

// 确定 Arguments 对象

i : 10, // 确定形式参数

c : pointer to function c(), // 确定函数引用

a : undefined, // 局部变量 初始值为 undefined

b : undefined // 局部变量 初始值为undefined

},

scopeChain : {},

this : {}

}

执行阶段例:

fooExecutionContext = { 

  variavleObject : {   

    arguments : {

0 : 10,length : 1

},       

i : 10,     

 c : pointer to function c(), 

 a : "Hello",// a 变量被赋值为 Hello     

 b : pointer to function privateB() // b  变量被赋值为privateB() 函数、

   }, 

  scopeChain : {}, 

  this : {}

}

 

作用链:

三属性为:变量对象、作用域链以及this

公式:(ScopeChain)=AO+[[scope]]

 

This:

1、普通函数调用

这个情况没特殊意外,就是指向全局对象-window

2、对象函数调用

this指向obj

3、构造函数调用

在构造函数里面返回一个对象,会直接返回这个对象,而不是执行构造函数后创建的对象

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

高阶函数与执行上下文

标签:内部函数   全局对象   并且   style   arguments   private   window   vat   ext   

原文地址:https://www.cnblogs.com/huronghua/p/11963400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!