博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中关于函数内部变量的调用方法(闭包)
阅读量:5759 次
发布时间:2019-06-18

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

hot3.png

      闭包(closure)是Javascript的特色,很多高级应用都要依靠闭包实现。

      首先必须理解Javascript变量作用域。全局变量和局部变量。函数内部能够读取全局变量,但是在外部无法读取函数内部变量。而闭包就是解决外部得到函数内的局部变量。

闭包的用途

1、读取函数内部的变量;
2、让函数内部的变量的值始终保持在内存中。

在下面的代码中我将详细说明闭包的用法和我的一些理解

<!DOCTYPE html>

<html>
<head>
    <title>javascript中关于函数内部变量的调用方法(闭包)</title>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
     <script type="text/javascript">
         function house(){
             var num=1;//房子内人的个数;
             addNum=function(){   //预留的增加函数人数的方法;
                 num+=1;
             }
             function query(){//这个函数就叫闭包
                 alert(num);
                 return num;//返回这个房子的人数
             }
             return query;//返回查询这个房子人数方法的指针及地址;
         }
         var res=house();//将这个房子的查询方法的指针/地址赋给变量res;
         res();//查询房子里面的人数  num=1;
         addNum();//增加房子内人的个数;
         res();//num=2
         //--所谓闭包可以这样理解:我们可以将 function比喻成 var 那么house()就相当于一个全局变量
         //num相当于house()这个全局变量的一个结构,addNum相当于一个改变house()这个全局变量部分结构的方法,
         //query()相当于house()中查询房子内部num结构的方法,因为house()相当于一个全局变量,那么它内部的
         //所以house()的结构也就相当于是全局变量。所以通过addNum()改变num值时num的变化会被保存下来,下次
         //再通过res这个指针访问house()时 num的值是已经改变后的。
     </script>
</body>
</html>

转载于:https://my.oschina.net/u/1162669/blog/155392

你可能感兴趣的文章
springboot系列十 Spring-Data-Redis
查看>>
Confluence 6 注册外部小工具
查看>>
excel进行矩阵计算
查看>>
基于Android平台的动态生成控件和动态改变控件位置的方法
查看>>
linux 死机分析
查看>>
BOM
查看>>
iOS: Block的循环引用
查看>>
mysql实战02 | 日志系统:一条SQL更新语句是如何执行的?
查看>>
ECC椭圆曲线详解(有具体实例)
查看>>
Linux常见命令(二)
查看>>
PyCharm切换解释器
查看>>
jmp far ptr s所对应的机器码
查看>>
css详解1
查看>>
【转载】Presentation at from Yoshua Bengio
查看>>
MySQL类型转换
查看>>
HashSet HashMap 源码阅读笔记
查看>>
变量声明提升1
查看>>
轻量级的Java 开发框架 Spring
查看>>
JS之路——浏览器window对象
查看>>
Chrome教程(二)使用ChromeDevTools命令菜单运行命令
查看>>