闭包

作者: js好难学啊 | 来源:发表于2018-09-28 22:21 被阅读0次

    闭包

    1. 两个经典例子

    1.1 First

    for (var i = 0; i < 5; i++) {
        setTimeout(function () {
            console.log(i);
        }, 1000);
    }
    
    // 结果是 5 5 5 5 5
    

    es6之后这个经典问题将var转换为let就可以轻松解决。
    原本之前可以创建一个闭包,将i作为参数传递给自执行函数像这个样子

    for (var i: number = 0; i < 5; i++) {
      (function (x) {
        setTimeout(() => {
          console.log(x)
        }, 1000)
      })(i)
    }
    // 结果是 0 1 2 3 4
    

    1.2 Second

    const fn = x => {
      return y => {
        return x + y
      }
    }
    
    const a = fn(1) // 此时的a就是一个闭包
    console.log(a(2)) //结果是3
    

    相关文章

      网友评论

          本文标题:闭包

          本文链接:https://www.haomeiwen.com/subject/hjymoftx.html