-
定义:闭包 个人理解就是函数里面又套了个函数。
-
因为函数外部是访问不了函数内部的数据的,此时使用闭包就可以延长作用域链,函数内部的函数可以访问到外层函数的数据。还可以把变量圈死在内部,这样就一定程度上避免了命名污染。
-
因为闭包内部的函数会一直存在于内存,所以造成内存浪费,如果使用不当还会导致内存泄漏;因为查找变量是从里往外找的,要多花点时间来找,所以消耗性能。
// 第一种
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(){}),要加括号。