function a(){
var i=1;
function b(){
console.log(i)
}
return b; //b不能直接越过a在全局作用
}
var c=a();
c(); //i=1
var inner; //定义
function outer(){
var a=1;
inner =function(){
console.log(a);
}
}
outer(); //调用
inner(); //调用
function outer(x){ //带形参,即为默认局部变量
function inner(y){
console.log(x+y);
}
return inner;
}
var i=outer(3);
i(3); //输出6
- 百度百科的定义:闭包就是能够读取其它函数内部变量的函数;JS中,只有函数内部的子函数才能读取局部变量,所以闭包可理解为“定义在一个函数内部的函数”,在本质上,闭包是将函数内部和函数外部连接起来的桥梁
- 特点:1、函数b在函数a内部 2、函数a返回了函数b
- 一个函数可以把自己内部的语句,和自己声明时所处的作用域一起封装成了一个密闭的环境,我们称为“闭包”
一个函数在执行的时候,找闭包里面的变量,不理会当前的作用域