闭包在 ECMAScript 解释闭包,指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量。地址: https://www.w3cschool.cn/ecma…下面说一下我自己对闭包的理解什么样的代码叫做闭包下面是一个简单的闭包代码var name = ‘张三’function sayName() { console.log(name);}// 执行sayName(); // 张三个人理解:只要函数内使用了不是函数内定义的变量,这个函数就称之为“闭包”。因为在函数载入内存时,不清楚 name 正正的值,直到在执行时才直到 name 具体的值。一个复杂一些的例子一个购物车的函数,函数内有 商品数量 的变量和 购买 的闭包// 购物车function shoppingCart() { var goodsNum = 0 // 购买 function buy() { goodsNum++ console.log(‘当前商品数量:’ + goodsNum) } return buy}var buy = shoppingCart()buy(); // 当前商品数量: 1buy(); // 当前商品数量: 2buy(); // 当前商品数量: 3执行后发现程序会一直保留商品数量的变量,因为引用的是函数外部的变量,不清楚变量具体的值,所以变量一直不会被释放。这样的话在做个例子。通过下面的例子总结一下:下面这段代码,buy这个函数是一个闭包,因为它引用了内部以外的变量。再把这个函数赋值给多个变量执行时,会依次创建多个闭包引入的变量副本,并且相互不会污染。// 购物车function shoppingCart() { var goodsNum = 0 // 购买 function buy() { goodsNum++ console.log(‘当前商品数量:’ + goodsNum) } return buy}var tomBuy = shoppingCart()var jackBuy = shoppingCart()tomBuy(); // 当前商品数量: 1jackBuy(); // 当前商品数量: 1tomBuy(); // 当前商品数量: 2jackBuy(); // 当前商品数量: 2tomBuy(); // 当前商品数量: 3jackBuy(); // 当前商品数量: 3结函数内引用了外部的变量,这个函数称为闭包闭包内引入的变量不会被释放,会一直保留状态闭包赋给多个变量执行,每个闭包内的变量状态,相互不会污染下一篇使用闭包的特点,做个实际开发中的例子。