<body>
<!--1.将函数作为另一个函数的返回值
2.将函数作为实参传递给另一个函数调用-->
<script>
//1.将函数作为另一个函数的返回值
function fn1(){
var a = 2
function fn2(){
a++;
console.log(a)
}
return fn2
}
var f = fn1() //闭包产生了
f() //3 f是调用内部函数,不是外部函数
f() //4
//请问整个过程中创建几个内部函数对象?一个!!! 内部函数是执行函数,并不是创建函数
//看闭包对象创建几个,就看你外部函数对象执行几次,因为创建外部函数对象,才会去创建内部函数对象,和内部函数执行几次没有关系,也就是和f()执行几次没有关系。因为执行外部函数时,执行了内部的函数定义,产生了变量。
//2.将函数作为实参传递给另一个函数调用function showDelay(msg,time){
setTimeout(function(){
alert(msg)
},time)
}
showDelay('fds',2000)//内部函数function(){alert(msg)}闭包里面有msg,如果没有msg,就没有闭包
</script>
</body>
常见 闭包
最新推荐文章于 2022-05-13 14:49:45 发布