分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

js闭包之应用场景

发布时间:2023-09-06 02:04责任编辑:胡小海关键词:js闭包

闭包的解释

一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。闭包是指有权访问另一个函数作用域的变量的函数

在javascript中,只有函数内部的子函数才能读取局部变量,所以说,闭包可以简单理解成“定义在一个函数内部的函数“。所以,在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

  闭包的特点:

  1) 作为一个函数变量的一个引用,当函数返回时,其处于激活状态。
  2) 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
  简单的说,javascript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。

闭包应用场景

1.setTimeout

setTimeout(func,time)这里的func不能带参数,解决这个问题需要用闭包

function func(param) { ???return function() { ???????alert(param); ???}}var f = func(1)setTimeout(f, 1000);

2.代替全局变量

//闭包,test2是局部变量,这是闭包的目的//我们经常在小范围使用全局变量,这个时候就可以使用闭包来代替。(function(){var test2=222;function outer(){ ???alert(test2);}function test(){ ???alert("测试闭包:"+test2);}outer(); //222test(); //测试闭包:222})(); alert(test2); //未定义,这里就访问不到test2

3.为节点循环绑定click事件,在事件函数中使用当次循环的值或节点,而不是最后一次循环的值或节点

4.创建特权方法用于访问控制

使用闭包的注意点

(1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

(2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

js闭包之应用场景

原文地址:https://www.cnblogs.com/raind/p/9328243.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved