前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端面试 【JavaScript】— 闭包有哪些表现形式?

前端面试 【JavaScript】— 闭包有哪些表现形式?

作者头像
越陌度阡
发布2021-11-19 16:02:29
3020
发布2021-11-19 16:02:29
举报

在真实的场景中,究竟在哪些地方能体现闭包的存在?

1. 返回一个函数;

代码语言:javascript
复制
function f1() {
  var a=2;
  return function f2() {
    console.log(a);
    //2  
  };
};
var num=f1();
num();

2. 作为函数参数传递;

代码语言:javascript
复制
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和当前作用域:

代码语言:javascript
复制
// 定时器
setTimeout(function timeHandler(){
  console.log('定时器');
},100);

// 事件监听
$('#app').click(function(){
  console.log('事件监听');
});

4. IIFE(立即执行函数表达式)创建闭包,保存了全局作用域 window 和 当前函数 的作用域,因此可以使用全局的变量。

代码语言:javascript
复制
var a=2;
(function IIFE(){
  console.log(a);
  // 2
})();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-11-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档