闭包面试题
闭包就是能够读取其他函数内部变量的函数。
由于在 Javascript 语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。
所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
闭包有两个作用,一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| function fun(n, o) { console.log(o) return { fun: function(m) { return fun(m, n) } } }
var a = fun(0) a.fun(1) a.fun(2) a.fun(3)
var b = fun(0).fun(1).fun(2).fun(3) var c = fun(0).fun(1) c.fun(2) c.fun(3) b.fun() var d = b.fun() d.fun()
|