关于闭包的一些问题

来源:2-5 闭包

艺术是什么

2020-09-30 21:39:37

http://img.mukewang.com/climg/5f7487c408551aa209320671.jpg

一个函数内部只能闭包一个函数吗?如果能闭包两个,f1()()执行的是哪个函数?图中为什么要把f1()赋值给一个变量,不能直接调用吗?nAdd在执行过程中是按全局变量执行的吗

写回答

1回答

樱桃小胖子

2020-10-07

同学你好,关于同学的问题解答如下:

1、闭包真正的含义是,如果一个函数访问了此函数的父级及父级以上的作用域变量,就可以称这个函数是一个闭包。图中“nAdd=function(){n=n+1}”这一行,首先在nAdd前面没有使用var关键字,因此nAdd是一个全局变量,而不是局部变量,其次,nAdd的值是一个匿名函数,而这个匿名函数本身也是一个闭包,所以nAdd可以在函数外部对函数内部的局部变量进行操作。那么,由此证明一个函数内部不只可以有闭包一个函数,可以有一个匿名函数一个普通函数。

2、f1()();执行的是f2这个函数的返回结果。

http://img.mukewang.com/climg/5f7d3fba09e799bd06470384.jpg

3、直接调用只能执行一次,赋值给rs后,则可以进行多次调用,比如:

http://img.mukewang.com/climg/5f7d559509974ee508330145.jpg

希望可以帮到你!

0

0 学习 · 14456 问题

查看课程