关于闭包的一些问题
来源:2-5 闭包
艺术是什么
2020-09-30 21:39:37
一个函数内部只能闭包一个函数吗?如果能闭包两个,f1()()执行的是哪个函数?图中为什么要把f1()赋值给一个变量,不能直接调用吗?nAdd在执行过程中是按全局变量执行的吗
1回答
樱桃小胖子
2020-10-07
同学你好,关于同学的问题解答如下:
1、闭包真正的含义是,如果一个函数访问了此函数的父级及父级以上的作用域变量,就可以称这个函数是一个闭包。图中“nAdd=function(){n=n+1}”这一行,首先在nAdd前面没有使用var关键字,因此nAdd是一个全局变量,而不是局部变量,其次,nAdd的值是一个匿名函数,而这个匿名函数本身也是一个闭包,所以nAdd可以在函数外部对函数内部的局部变量进行操作。那么,由此证明一个函数内部不只可以有闭包一个函数,可以有一个匿名函数一个普通函数。
2、f1()();执行的是f2这个函数的返回结果。
3、直接调用只能执行一次,赋值给rs后,则可以进行多次调用,比如:
希望可以帮到你!