前端面试 JavaScript— 闭包有哪些表现形式?
Posted aiguangyuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端面试 JavaScript— 闭包有哪些表现形式?相关的知识,希望对你有一定的参考价值。
在真实的场景中,究竟在哪些地方能体现闭包的存在?
1. 返回一个函数;
function f1()
var a=2;
return function f2()
console.log(a);
//2
;
;
var num=f1();
num();
2. 作为函数参数传递;
var a = 1;
function f1()
var a = 2;
function f2()
console.log(a);
;
f3(f2);
;
function f3(fn)
fn();
;
f1();
// 2
3. 在定时器、事件监听、Ajax请求、跨窗口通信、Web Workers或者任何异步中,只要使用了回调函数,实际上就是在使用闭包;
以下的闭包保存的仅仅是window和当前作用域:
// 定时器
setTimeout(function timeHandler()
console.log('定时器');
,100);
// 事件监听
$('#app').click(function()
console.log('事件监听');
);
4. IIFE(立即执行函数表达式)创建闭包,保存了全局作用域 window 和 当前函数 的作用域,因此可以使用全局的变量。
var a=2;
(function IIFE()
console.log(a);
// 2
)();
以上是关于前端面试 JavaScript— 闭包有哪些表现形式?的主要内容,如果未能解决你的问题,请参考以下文章