JS中的闭包及闭包函数的实现

变量根据作用域的不同分好为两种:局部变量和全局变量。

1,函数内部可以使用全局变量

2,函数外部不可以使用局部变量

3,当函数执行完毕后,本作用域内的局部变量会销毁

闭包:指有权访问另一个函数作用域中变量的函数。

简单理解就是,一个作用域可以访问另一个函数的局部变量。

第一种情况,案例代码:

function fn(){
var num=10;
function fun(){
console.log(num);
}
fun();
}
fn();

fun这个函数作用域访问了另外一个函数fn里的局部变量num,被访问的局部变量所在的函数就是闭包函数,配图如下:

GIF 2021 6 15 23 08 50 JS中的闭包及闭包函数的实现

换个说法就是子函数可以使用父函数的局部变量。

第二种情况,案例代码:

function fn(){
var num=10;
function fun(){
console.log(num);
}
return fun;
}
var f = fn();
f();

fn外面的作用域(全局作用域)可以访问fn内部的局部变量。

将fun作为返回值赋值给f,此时f也是一个函数。

GIF 2021 6 15 23 23 57 JS中的闭包及闭包函数的实现

总结:闭包的主要作用是延伸了变量的作用范围。

GIF 2021 6 15 23 23 57 JS中的闭包及闭包函数的实现

未经允许不得转载:王刚博客 » JS中的闭包及闭包函数的实现

赞 (0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏