作用域: 变量的可使用范围
作用域链
当使用一个变量的时候,会首先在当前作用域查找,如果查找不到会继续向外一层作用域查找,直到查到为止;查不到报错(就近原则)
闭包
简单来说就是函数嵌套函数,函数内部可以调用外部的局部变量,但是外部不能调用内部变量
优点:可以隔离作用域,不造成全局污染
缺点:闭包长期驻留内存,造成内存泄漏
解决方法: 将暴露在外的闭包设置为null
function addNum(a){
return function (b){
return a + b
}
}
let add1 = addNum(10)
/**
* add1 = function (b){
return 10 + b
}
*/
let add2 = addNum(20)
/**
* add2 = function (b){
return 20 + b
}
*/
console.log(add1(10))//20
console.log(add2(20))//40