JavaScript闭包

<!doctype html>
<html lang="en">
<head>
    <title>&#x95ED;&#x5305;&#x9012;&#x5F52;</title>
    <script>
    window.onload = function(){
        //闭包  能够读取其它函数内部变量的函数
        //JS 中每个函数都是个体,它是可以获取父元素的信息,但是父元素不能直接获取子元素内容
        //关键点:是否引用了外部变量

        //闭包
        function a() {
            var n = 0;
            function add(){
                n++;
                console.log(n);
            };
            add();
        };
        a();

        function a1() {
            this.n = 0;
            this.add = function(){
                this.n++;
                console.log(this.n);
            }
        };
        var a2 = new a1();
        a2.add()
        //另一种写法
        function a1() {
            var n = 0;
            this.add = function(){
                n++;
                console.log(n);
            }
        };
        var a2 = new a1();
        a2.add()

        function a3() {
            var n=0;
            function add(){
                n++;
                console.log(n);
            };
            return add;
        };
        a3(); //function

        function a3() {
            var n=0;
            function add(){
                n++;
                console.log(n);
            };
            return add;
        };
        a3()();
        //函数立即调用
        var a =(function (){
            var n=0;
            function add(){
                n++;
                console.log(n);
            };
            return add;
        }());
        a();

        //闭包传参数
        function f(x){
            var i = 0;
            return function(){
                return x[i++]
            }
        }
        var abc = f(['a','b','c']);
        abc()

        var f = (function(x){
            var i = 0;  //1
            return function(){
                return x[i++]
            }
        }(['a','b','c']))
        f();

        //递归   就是在运行的过程中调用自己
        function f(n) {
            if(n<=1){
                return 1;
            }else {
                return n*f(n-1)
            }
        };
        f(3)
    }
    </script>
</head>
<body>

</body>
</html>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>&#x8F6F;&#x8C0B;&#x6559;&#x80B2;</title>
    <link rel="stylesheet" type="text/css" href="css/pure-min.css">
    <link rel="stylesheet" type="text/css" href="css/common.css">
    <link rel="stylesheet" href="font/iconfont.css">
    <script src="js/jquery-1.11.1.min.js"></script>
    <script src="font/iconfont.js"></script>
    <script src="js/demo1.js"></script>
</head><body>
<!--页面容器-->
<div class="page-container">
  <!--开屏广告-->
    <div>
      <div id="count-down"><span class="jump">&#x8DF3;&#x8F6C;<b>5</b></span></div>
    </div>
    <!--主体-->
    <div class="content">
    <!-- LOGO -->

       <!-- 按钮 -->
       <div class="content-main">
           <div class="btn-box btn-wechat">
                <div class="pure-g">
                    <div class="pure-u-1-4  icon-i"><i class="iconfont">&#xE613;</i><label>&#x6559;&#x80B2;&#x57F9;&#x8BAD;</label></div>
                    <div class="pure-u-1-4 icon-i"><i class="iconfont">&#xE62E;</i><label>&#x751F;&#x6D3B;&#x767E;&#x79D1;</label></div>
                    <div class="pure-u-1-4 icon-i"><i class="iconfont">&#xE61D;</i><label>&#x5BB6;&#x653F;&#x670D;&#x52A1;</label></div>
                    <div class="pure-u-1-4 icon-i"><i class="iconfont">&#xE60F;</i><label>&#x91D1;&#x878D;&#x7406;&#x8D22;</label></div>
                </div>
           </div>
            <p class="clause">
                <label for="option-one" class="pure-checkbox">
                    &#x672C;&#x6B21;&#x4E0A;&#x7F51;&#x65F6;&#x957F;<span id="ptime">00:00:00</span>
                </label>
            </p>
       </div>
    </div>
</div>
</body>
</html>
$(function() {
    var num = $("#count-down span b").text();
    var timer;
    countDown(num);
    $(".jump").click(function() {
        jump();
    })
    //&#x5224;&#x65AD;&#x5012;&#x8BA1;&#x65F6;
    function countDown(n) {
        if(n>0){
            setTimeout(function(){
                n--;
                $("#count-down span b").text(n);
                countDown(n);
            },1000)
        }else {
            jump();
        }
    };

    function jump() {
        $("#count-down").fadeOut(800);
        if(timer){
            clearInterval(timer);
        }
        timer = setInterval(setClock,1000);

    }
    //&#x8BB0;&#x5F55;&#x4E0A;&#x7F51;&#x65F6;&#x957F;
    var h=0,m=0,s=0,str="";
    function setClock() {
        str="";
        if(++s == 60){
            if(++m== 60){
                h++;
                m=0;
            }
            s=0;
        }
        /*if(s<10){ str+="0" +s; }else { };* str +="h<10?'0'+h:h;" ; $("#ptime").text(str); } }) < code></10){>

Original: https://www.cnblogs.com/Dewumu/p/14412507.html
Author: 德乌姆列特
Title: JavaScript闭包

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606628/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • redis出现错误:NOAUTH Authentication required.

    出现认证问题,应该是设置了认证密码,输入密码既可以啦 注意密码是字符串形式! 127.0.0.1:6379> auth "yourpassword" 密码…

    Linux 2023年5月28日
    084
  • TCP三次握手与四次挥手

    什么是三次握手? 一般情况下,连接是由客户端向服务端发起的。 第一次,客户端发送一个TCP数据报并将SYN同步位置为1,表示要建立连接,此时客户端会从CLOSED状态变为SYN_S…

    Linux 2023年6月8日
    0109
  • Docker容器网络

    Docker容器网络 1、Docker容器网络 Docker在安装后自动提供3种网络,可以使用`docker network ls命令查看 [root@localhost ~]# …

    Linux 2023年6月7日
    0101
  • 剑指offer计划链表

    剑指offer计划链表 从尾到头打印链表 /** * public class ListNode { * int val; * ListNode next = null; * * …

    Linux 2023年6月11日
    073
  • KETTLE使用中的错误集锦

    1.违反唯一主键约束条件:问题是表中有俩个主键,将备用主键替换成真正的主 键或者是没有对数据做出处理加这句话and cft.DEL_FLAG!=’1’或者要…

    Linux 2023年6月13日
    0170
  • Celery异步任务

    情景: 用户发起request,并等待response返回。在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验,比如发送邮件、手机验证码等…

    Linux 2023年6月8日
    089
  • centos挂载windows共享目录

    背景 在linux环境下访问远程windows的共享目录,将windows上的目录挂载到linux目录下。如下图: 一、windows上新建共享文件夹 windows设置共享目录 …

    Linux 2023年6月6日
    0107
  • NO.6 HTML+CSS 笔记

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0102
  • redis详解(三)– 面试题(转载)

    使用redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持st…

    Linux 2023年5月28日
    0114
  • python爬虫爬取国家科技报告服务系统数据,共计30余万条

    python爬虫爬取国家科技报告服务系统数据,共计30余万条 按学科分类【中图分类】 共计三十余万条科技报告数据 爬取的网址:https://www.nstrs.cn/kjbg/n…

    Linux 2023年6月14日
    079
  • Supervisor进程管理

    Supervisor 介绍 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它…

    Linux 2023年6月8日
    0117
  • 面试题:深拷贝、浅拷贝、引用拷贝的区别

    引用拷贝 浅拷贝 深拷贝 小结 作者:小牛呼噜噜 | https://xiaoniuhululu.com计算机内功、JAVA底层、面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」…

    Linux 2023年6月6日
    0101
  • [Git系列] Git 基本概念

    版本控制系统 版本控制系统是一种帮助软件开发者实现团队合作和历史版本维护的软件,一个版本控制系统应具备以下列出的这几个基本功能: 允许开发者并发工作; 不允许一个开发者覆写另一个开…

    Linux 2023年6月14日
    0105
  • redis用法分析

    redis也是一个内存非关系型数据库,它拥有memcache在数据存储上的全部优点,而且在memcache的基础上增加了数据持久性功能,redis用rdb和aof两种方式实现数据持…

    Linux 2023年5月28日
    085
  • Linux基础和命令

    Linux的哲学思想 优势 一切都是一个文件。(包括硬件,文本,二进制,源代 码) 系统中拥有小型,单一用途的程序。(一个程序只负责 做好自己的本职工作) 当遇到复杂任务,通过不同…

    Linux 2023年6月6日
    094
  • Python之NMAP详解

    NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。 nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些…

    Linux 2023年6月14日
    0123
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球