1.什么是闭包?
闭包就是一种获取函数内部变量的函数
2.闭包有什么用?
因为 js 所有的变量都有一个自己的作用域,如果要拿一个局部作用域的参数,就可以用闭包实现。
3.闭包函数和普通函数的区别
1.至少有两个函数
2.return 内部的函数
用法1
var fun = function(b){var a = '我是fun 中的一个变量';
return function fun2(b){
console.log(a);
console.log(b)
return fun(b);
}
}
var a = fun();
a('我是参数b');
这样就能在外部使用 fun内部 变量 a
补充面试题一个
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);//undefined,?,?,? var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,? var c = fun(0).fun(1); c.fun(2); c.fun(3);//undefined,?,?,?
//问:三行a,b,c的输出分别是什么?
可以先想一下再看答案
方便理解将上面的公式变换一下
(面试题一般 会绕一些弯子,给方法名和参数 挖坑)