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)

大家都在看

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