闭包、this

闭包的定义很简单:函数 A 返回了一个函数 B,并且函数 B 中使用了函数 A 的变量,函数 B 就被称为闭包。

function A() {
  let a = 1
  function B() {
      console.log(a)
  }
  return B
}

闭包的作用:
1.实现公有变量: eg:函数累加器
2.可以做缓存(存储结构):eg:eater
3.可以实现封装,属性私有化:eg:new Person();
4.模块化开发,防止污染全局变量

经典例子:

//例子一:
for (var i = 0; i < 5; ++i) {
  (function(i) {
    setTimeout(function() {
      console.log(i + " ");
    }, 100);
  })(i);
}

例子二:
function add() {
  var x = 1;
  return function() {
    console.log(++x);
  };
}
var num = add();
num(); //输出2,
num(); //输出3,

this

var name = "The Window";
var object = {
    name: "My Object",
    getNameFunc: function () {
        return function () {
            return this.name;
        };
    }
};
alert(object.getNameFunc()());//window


var name = "The Window";
var object = {
    name: "My Object",
    getNameFunc: function () {
        var that = this;
        return function () {
            return that.name;
        };
    }
};
alert(object.getNameFunc()());//my object

箭头函数的特点

谈一谈箭头函数与普通函数的区别?
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象
不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误
不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替
不可以使用yield命令,因此箭头函数不能用作Generator函数

http://www.imooc.com/article/288214?block_id=tuijian_wz

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. JS创建变量的5种方式?varletconstfunctionexport/import 2. var,le...
    Angel_6c4e阅读 856评论 0 13
  • 1、解释一下CSS的盒子模型? ☆ 答:1)盒模型: 内容(content)、填充(padding)、边界(mar...
    高磊_IT阅读 840评论 0 7
  • 实在来不及自己写了 把读过的文章先转过来 明天再进行编辑 axios项目目录结构 注:因为我们需要要看的代码都是...
    vivianXIa阅读 913评论 0 1
  • 进入园区遇到一个带耳钉的小哥,说去入职某hu xxx部门,简单问候了两句,他祝我面试成功。面试官是一个圆脸的面带微...
    LuckySweet123阅读 138评论 0 0
  • Swift003-访问修饰词 函数 闭包 访问限制词 在 Swift 语言中,访问修饰符有五种,分别为 filep...
    DDY阅读 396评论 0 0