美文网首页
[前端]什么是闭包?

[前端]什么是闭包?

作者: 半颗糖嘿 | 来源:发表于2022-10-14 18:59 被阅读0次

1)什么是闭包?
当一个函数里面返回另一个函数的形式,就称为闭包。
eg:

function fn() {
  var a = 1;
  return function() {
    return a;
  }
}
var b = fn();
console.log(b());// 1

2)闭包的作用:打破函数作用域的限制,当前函数的作用域外访问函数内部的私有成员,延长变量的声明周期。
3)特点:
①打破了作用域的限制,让全局访问局部变量成为可能。
②局部变量常驻内存中------》内存空间长期被占用(弊端),会造成内存泄漏(有一块内存空间被长期占用,而不被释放)。
③归根结底还是局部变量------》防止了全局变量的污染。
4)应用场景
场景一:模块封装,防止变量污染全局

var Mokuai = (function(){
    // 声明为模块私有变量,外界无法直接访问
    var foo = 0;
    function Mokuai(){}
    Mokuai.prototype.bar = function bar(){
        return foo;
    }
    return Mokuai;
}());

场景二::在循环中创建闭包,防止取到意外的值

eg:无论哪个元素触发事件,都会弹出5。因为函数执行后引用的i是同一个,而i在循环结束后就是5。
for(var i = 0;i<5;i++){
    document.getElementById('id'+i).onfocus = function(){
        alert(i);
    }
}
// 可用闭包解决
function makeCallback(num){
    return function(){
        alert(num);
    }
}
for(var i = 0;i<5;i++){
    document.getElementById('id'+i).onfocus = makeCallback(i);
}

相关文章

  • [程序员每日5分钟]JS 中的闭包是什么

    闭包 是前端开发者面试必问的一个知识点。1、什么是闭包?2、闭包的作用是什么? 一、变量的作用域 你要学习和理解闭...

  • Js中的闭包

    闭包 是前端面试必问的一个知识点 one: 什么是闭包 two: 闭包的作用是什么 一、变量的作用域 全局变量 和...

  • js闭包其实不难,你需要的只是了解何时使用它

    究竟什么是闭包? 闭包在什么场景下使用? 写前端程序需要用到闭包吗?我用jQuery也能写的好好滴呀? 对于初学者...

  • JS-读懂闭包

    长久以来,闭包是前端同学面试必考的问题。会用闭包也成了高级前端开发者的标志,今天就来彻底弄清楚闭包的每一个细节。 ...

  • 闭包

    title: 闭包date: 2018-05-27 23:00:00tags: 闭包categories: 前端 ...

  • 高级前端面试题

    1.什么是闭包,闭包的作用2.宏任务微任务3.微前端(阿里乾坤框架)4.call,apply.bind5.23种设...

  • 前端常见问题总结

    什么是闭包?闭包的用途是什么?闭包的缺点是什么? 什么是闭包 闭包:内部函数总是可以访问其所在的外部函数中声明的参...

  • python函数部分

    什么是闭包,闭包的常用用法,怎样判断是不是闭包,闭包的作用是 1、什么是闭包 2、常用用法 3、判断是不是闭包 4...

  • 我理解的JavaScript闭包

    闭包是前端开发中的一个重要概念,也是前端面试的必问问题之一。对于JavaScript初学者而言,闭包学习JavaS...

  • 闭包、call-apply-bind 的用法 、HTTP状态码

    一、什么是闭包?闭包的用途是什么?闭包的缺点是什么? 答 :1、什么是闭包:如果一个函数用到了外部的变量,那么这个...

网友评论

      本文标题:[前端]什么是闭包?

      本文链接:https://www.haomeiwen.com/subject/ggebartx.html