closure

  • 1 什么是闭包

    闭包是定义在函数内部的函数,闭包使得变量即使脱离了该函数的作用域范围也依然能被访问到。

    2 为什么需要闭包

    局部变量无法共享和保存,全局变量会污染,希望有一种长久的机制可以保存变量又不会污染全局。

    3 理解闭包

    JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里。

    短答案:JavaScript中的闭包,无非就是沿着作用域链进行变量解析的过程。首先看一段话:

    每次定义一个函数,都会产生一个作用域链(scope chain)。当JavaScript寻找变量varible时(这个过程称为变量解析),总会优先在当前作用域链的第一个对象中查找属性va