闭包指的是:能够访问另一个函数作用域的变量的函数。清晰的讲:闭包就是一个函数,这个函数能够访问其他函数的作用域中的变量。例如
function outer() {很多人会搞不懂匿名函数与闭包的关系,实际上,闭包是站在作用域的角度上来定义的,因为inner访问到outer作用域的变量,所以inner就是一个闭包函数。虽然定义很简单,但是有很多坑点,比如this指向、变量的作用域,稍微不注意可能就造成内存泄露。
var a = '变量1'
var inner = function () {
console.info(a)
}
return inner // inner 就是一个闭包函数,因为他能够访问到outer函数的作用域
}
<script>
for(var i=0; i<10; i++){
console.info(i)
}
alert(i) // 变量提升,弹出10
//为了避免i的提升可以这样做
(function () {
for(var i=0; i<10; i++){
console.info(i)
}
})()
alert(i) // underfined 因为i随着闭包函数的退出,执行环境销毁,变量回收
</script>
网友回复
python如何将影视片段中每个分镜头画面自动截图生成分镜头描述词及时间戳?
python如何结合ai对经典影视片段进行视频重绘?
python如何将html或markdown转换成word、pdf、ppt文档?
centos7如何安装pandoc?
openai发布o3/o4-mini如何做到将python内置到模型中?
如何免费白嫖gpt4.1?
mcp mysql及sqlite让ai自主操作数据库能否代替传统的应用系统开发?
selenium中Firefox WebDriver 时,--window-size参数设置窗口大小无效?
支付宝mcp如何用python接入智能体聊天服务进行收费?
微信小程序如何实现webview网页完整截图?