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分布式锁的N种姿势

    Redis几种架构 Redis发展到现在,几种常见的部署架构有: 单机模式; 主从模式; 哨兵模式; 集群模式; 我们首先基于这些架构讲解Redisson普通分布式锁实现,需要注意…

    Linux 2023年5月28日
    0110
  • JuiceFS 在数据湖存储架构上的探索

    大家好,我是来自 Juicedata 的高昌健,今天想跟大家分享的主题是《JuiceFS 在数据湖存储架构上的探索》,以下是今天分享的提纲: 首先我会简单的介绍一下大数据存储架构变…

    Linux 2023年6月14日
    0148
  • Linux 文件查看命令

    文件查看命令 1、cat:从第一行开始显示文件内容 使用方式:cat 文件 或 文件路径 例如:cat ifcfg-eth0 或 cat /etc/sysconfig/networ…

    Linux 2023年6月14日
    0105
  • 安卓开发封装处理Retrofit协程请求中的异常

    上篇文章讲解了怎么使用 Kotlin的协程配合 Retrofit发起网络请求,使用也是非常方便,但是在处理请求异常还不是很人性化。这篇文章,我们将处理异常的代码进行封装,以便对异常…

    Linux 2023年6月8日
    0108
  • 从 Hadoop 到云原生, 大数据平台如何做存算分离

    Hadoop 的诞生改变了企业对数据的存储、处理和分析的过程,加速了大数据的发展,受到广泛的应用,给整个行业带来了变革意义的改变;随着云计算时代的到来, 存算分离的架构受到青睐,企…

    Linux 2023年6月14日
    060
  • Gitlab 403 forbidden 并发引起IP被封

    问题 在工作中自搭建的Gitlab。但今天打开页面的时候显示的是空白页面,上面还有一次文本Forbidden。 原因 Gitlab使用rack_attack做了并发访问的限制。 解…

    Linux 2023年6月14日
    083
  • RPA工单查询和下载流程机器人

    bash;gutter:true;1、登录业务系统,输入用户名和密码2、进入下载模块3、输入下载查询条件4、进入文件明细单5、下载文件视频地址:https://www.bilibi…

    Linux 2023年6月7日
    0145
  • Jenkins 内置变量

    BRANCH_NAME 对于多分支项目,这将设置为正在构建的分支的名称,例如,如果您希望master从功能分支而不是从功能分支部署到生产;如果对应于某种更改请求,则名称通常是任意的…

    Linux 2023年5月27日
    0105
  • 关于熵,条件熵,交叉熵等的介绍

    参考:《数学之美》一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉详解机器学习中的熵、条件熵、相对熵和交叉熵常用的分类问题中的损失函数 1.信息量与信息熵 香农在他著名的…

    Linux 2023年6月13日
    096
  • 2020年12月-第01阶段-前端基础-HTML CSS 项目阶段(一)

    品优购项目(一) 目标: 能会引入ico图标 能简单看懂网站优化的三大标签 能使用字体图标 ( 重点 ) 能说出我们css属性书写顺序 1. 品优购项目介绍 项目名称:品优购 项目…

    Linux 2023年6月8日
    0113
  • 数字图像处理

    1. 图像的基本概念 连续图像:二维坐标系上连续变化的图像,图像的像点无限稠密。 离散图像:用数字序列表示的图像,像素是组成图像的基本单位。 1.1 图像数字化采样 图像经过采样与…

    Linux 2023年6月14日
    090
  • 如何搭建android源代码repo仓库

    .版本: v0.3作者:河东西望日期:2022-7-5. 如果你的开发是基于AOSP源码来建仓,那么搭建repo服务器和部署自己的repo仓库就是非常必要的工作了。 现实中很多公司…

    Linux 2023年6月7日
    078
  • mysql查询中字符串转换成数字

    在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如’0’…

    Linux 2023年6月13日
    077
  • K8s-二进制安装

    K8S-二进制安装使用 1.IP总规划 服务类型 ip地址 组件 k8s-master01 etcd集群节点1 192.168.80.20 kube-apiserver、kube-…

    Linux 2023年6月13日
    098
  • c++ 11 是如何简化你的数据库访问接口的

    之前写过一篇文章专门分析了 c++ 模板编译过程中报的一个错误:《fatal error C1045: 编译器限制 : 链接规范嵌套太深 》,其中涉及到了 qtl —— 一个使用 …

    Linux 2023年6月6日
    099
  • 【论文笔记】(2015,防御蒸馏)Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks

    有关蒸馏 (Distillation)的论文: (2006)Model Compression (2014)Do Deep Nets Really Need to be Deep?…

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