python什么是闭包的作用域_什么是闭包?变量作用域和闭包。

变量作用域和闭包

变量作用域

当我们写 js 文档的时候经常会设置变量,变量的类型有两种:

全局变量

局部变量

这两种类型的变量有者不同的作用范围,全局变量的作用范围是面向整个文档的,可以称之为全局作用域,局部变量是在函数内部设置的,作用范围为当前的函数,外部不能直接引用,因此称为函数作用域。

var a=1;

function test(){

var b=2;

console.log(a)

}

test()// 1

console.log(b) //error

闭包

简单来说嵌套在函数里的函数以及周边的变量叫闭包

闭包周边的变量在执行完函数之后不会被释放,会常驻内存

function test(){

var a = 1;

function test1(){

var b = 2

}return test1

}

var test2=test()

test2();

上面的代码就是一段闭包,函数test1被包裹在函数test中,对于test1而言,test内的所有变量都是可见的,但是反过来不行。将test1作为返回值,就可以在test外部进行读取了。

function test(){

var a = 1;

function test1(){

a++

console.log(a)

}return test1

}

var test2=test()

test2();//2

test2();//3

test2();//4

在上面的代码中,函数test2实际上就是函数test1的闭包函数,我们让其执行三次,结果分别为2、3、4。这是因为,函数test中的局部变量一直被保存在内存中。所以闭包有个缺点,就是内存占用较大。

自执行函数

var callback=(function(){

var a = 1;

function test(){

a ++;

console.log(a)

}

return test;

})();

callback();2

callback();3

上面这段函数也是闭包的一种。

我们利用闭包来做一个小例子。

  • 1
  • 2
  • 3

var li = document.getElementsByTagName("li");

for(i=0;i

(function(){

var n=i;

li[n].οnclick=function(){

var pp = li[n].innerHTML;

alert(pp)

}

})();

}

我们创建了一个列表,当我们点击列表的时候,浏览器将列表里的内容弹窗显示。

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值