闭包

闭包是指有权限访问另一个函数作用域中变量的函数

创建闭包的常见方式是在一个函数内部创建另一个函数。

与之相关概念:作用域 作用域链

作用域:当某个函数被调用时,会创建一个执行环境及相应作用域链,

作用域链:保证对执行环境有权访问的所有变量和函数的有序访问。

  当前变量是当前执行代码所在环境的变量对象,下一个变量来自包含(外部)环境,再下一个变量来自下一个包含环境,这样一直延伸到全局执行环境。

作用域链这种配置机制,引出一个副作用:

  闭包只能取得包含函数中任何变量的最后一个值。

function createClosure(limitedNumber, string){
   var result = [];
   for (var i = 10; i >= 0; i--) {
       result[i] = function(){
         return i;
       }
   }
   return result;
}

返回的都是 10

原文地址:https://www.cnblogs.com/zyjzz/p/7077171.html