闭包

335 阅读1分钟
  1. 定义:闭包 个人理解就是函数里面又套了个函数。

  2. 因为函数外部是访问不了函数内部的数据的,此时使用闭包就可以延长作用域链,函数内部的函数可以访问到外层函数的数据。还可以把变量圈死在内部,这样就一定程度上避免了命名污染。

  3. 因为闭包内部的函数会一直存在于内存,所以造成内存浪费,如果使用不当还会导致内存泄漏;因为查找变量是从里往外找的,要多花点时间来找,所以消耗性能。

// 第一种
function get1(){
    var num = 250
    return function get2(){
        console.log(num)
    }
}
var fn = get1()
fn()        // 250
get1()()    // 250

// 第二种
function get1(){
    var num = 250
    function get2(){
        console.log(num)
    }
    get2()
}
get1()       // 250

// 还可以利用匿名函数和自调用函数
// 匿名函数的写法是(function(){}),要加括号。