Rumah > hujung hadapan web > tutorial js > 简单理解JavaScript闭包

简单理解JavaScript闭包

高洛峰
Lepaskan: 2016-10-15 16:09:43
asal
1290 orang telah melayarinya

很多关于JS的书籍例如《JavaScript权威指南》或者《高程》都把闭包解释的晦涩难懂,萌新们是怎么也看不懂啊!不过别怕,今天我就用很简单的方式给大家讲解下到底什么是闭包。这是一篇面对新手的对于闭包的解释,没有晦涩生硬的语句,一看就能明白。如有不妥欢迎指正!
要理解闭包,首先要理解变量的作用域。
JS中变量作用域有两个:全局变量以及局部变量,顾名思义,全局变量就是在任何位置都可以引用的变量,局部变量就是只能在特定位置才能引用的变量,看下面代码。

var globalScope="global scope";
function f(){
    var localScope="local scope";
    console.log(globalScope);//global scope
}
console.log(localScope);//undefined
Salin selepas log masuk

在函数f()内可以访问到函数体外定义的globalScope,而在函数体外不能访问到函数体内定义的localScope,这就是全局变量与局部变量的区别。
难道在函数体外就永远访问不到localScope了吗?非也,闭包就是为此而生。

function f(){
    var localScope="local scope";
    return function(){
        console.log(localScope);
    }
}
f()();//local scope
Salin selepas log masuk

我们在函数f()外访问到了局部变量localScope,这里在函数f()内定义的匿名函数就是一个闭包!

1.png

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan