博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈js中的闭包
阅读量:6002 次
发布时间:2019-06-20

本文共 1206 字,大约阅读时间需要 4 分钟。

对于一个个刚刚接触前端的新手,天天听人讲闭包,听的那个高大尚,心中对各位技术大佬是那个的膜拜,于是做为前端菜鸟的我,就去了解了传说中的闭包。

何为闭包?

通俗易懂的讲,就是可以调用函数内部的变量和方法

举例说明如下:

function test(){           var x = 1;           var y = 2;           function func1(){               x++;               console.log("x:"+x);           }           function func2(){               y++;               console.log("y:"+y);           }            func3 = function(){               console.log("x+y:"+(x+y));           }           return {               func1:func1           }       }       var obj1 = test();       obj1.func1();//输出x:2       obj1.func1();//输出x:3       func3();//输出x+y:5       var obj2 = test();       obj2.func1();//输出x:2       obj2.func1();//输出x:3       obj2.func1();//输出x:4       func3();//输出x+y:6       obj1.func1();//输出x:4       func3();//输出x+y:6

解析:你可以把test理解成一个对象,首先建立一个obj1对象,这个时候调用obj1.func1()时,test中的x会被累加,这个就是闭包的一个特点,就是外部可以改变函数内部的变量值,这里要记住一点,只有在test中return返回的函数在外部才能被调用,如果此时调用obj1.func2()会提示出错的,只有跟func1一样在return中返回才能被外部调用;func3可以理解为公有的函数,但是只有在声明完test之后才能被调用,因为func3第一次定义是在test中定义的,所有要先test()之后才能被调用;obj2是新建立的一个对象,此时的obj1和obj2两个对象是互不干扰的,各自叠加,这也是闭包的一个特性,可以用在以后建立多个计时器时使用闭包,事半功倍;这里要特别强调一下func3这个函数,第一个func3调用的是对象obj1中的func3,而当obj2新对象声明之后,func3调用的就是obj2中的func3了

转载地址:http://qadmx.baihongyu.com/

你可能感兴趣的文章
IBM、HPUX、Solaris不同之处
查看>>
verilog 里面,always和always@(*)有区别吗?
查看>>
86标准sql与92标准SQL用法区别
查看>>
SIO_KEEPALIVE_VALS 用户异常掉线检测
查看>>
Inno Setup入门(二)——修改安装过程中的图片
查看>>
服务器性能瓶颈分析方法(转载)
查看>>
JAVA学习笔记——JAVA基础语法(六)
查看>>
modelform实例学习
查看>>
EF CRUD
查看>>
初识python:time 模版
查看>>
mysql慢查询日志分析工具mysqldumpslow
查看>>
4.09.1
查看>>
电话本管理程序(实现增删改查功能)
查看>>
LOCK_TIMEOUT
查看>>
Python脱产8期 Day29 2019/5/24
查看>>
学c#语言的感想
查看>>
Windows 驱动模型的发展历史
查看>>
Android视图的截图
查看>>
App列表之分组ListView
查看>>
Android&iOS崩溃堆栈上报
查看>>