栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaScript中的闭包

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript中的闭包

我们日常面试的时候难免会遇见面试官提问相关闭包的问题

然而对闭包这个概念又模糊不清


首先函数都有自己的执行环境,该环境定义了变量或者函数访问数据的权限,当离开执行环境后,该环境内的变量会被销毁。

function add() {
    let a = 1;
    console.log(a); // 1
}
console.log(a);//undefined

这里,我们在函数外去访问函数内定义的变量是访问不了的,控制台输出为undefined

因为函数外的console语句访问变量a的时候执行的时候,是在add()函数外部,不在它的作用域范围内。

那么,可不可以访问呢?


//实现闭包
function add() {
    const a = 1;
    const addOne = function(b) { return b + a; }
    return addOne;
}

const addOne = add();
console.log(addOne(1)); // 2

这里的add() 函数执行完毕之后,会从函数调用栈中被推出,同时局部变量a应该被清理才对, 但我们调用 addOne(1) ,得到的结果却是2。说明a在 add() 执行结束后并没有被销毁,而是进入到了 addOne() 的作用域。

这里的 addOne() 函数被称为匿名函数(anonymous function)也叫做闭包(closure)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992954.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号