这篇MDN文章包括js的高级进阶以及实战,是前端开发人员比较好的帮手。
那今天就学习一下闭包的
首先,闭包是一个函数以及其周边捆绑的周边环境状态的引用组合,用人话讲就是闭包内部的函数可以访问函数外部的作用域。
javascript中闭包会随着函数的创建而被同时创建。
什么是词法作用域?
下面用一个函数解释:
简单来说词法作用域就是内部函数sayname()调用了外部函数init()內部作用域里面的name
两个函数的作用域不同,但是外部函数的变量可以被内部函数进行调用。
闭包
以上这张图片就是闭包的完美展现
下面是一个好玩的闭包现象
这里我相信很多同学都懵了,为什么呢?主要是不知道函数传值,为什么可以被两次传值呢,其实有兴趣的小伙伴可以去验证一下,注意观察我的主函数init(),它里面实现的逻辑是return一个函数,这个函数是接收x的值,所以可以在下方使用result进行接收并且使用再次将x的值进行赋值,所以就实现了两次赋值,最终函数可以正常运行出结果。
好啦,以上其实也不是作者的初创啦,都是作者按照mdn上面的思路进行的操作,所以进行的一部分解读,感兴趣的小伙伴可以去尝试啦。