zoukankan      html  css  js  c++  java
  • JS——封闭函数、闭包、内置对象

    封闭函数:时javascript中匿名函数的另一种写法,创建一个一开始就执行而不用命名的函数

    示例:

    1)

    (function(){
        var str = '欢迎访问我的主页';
        alert(str);
        a++;
     })();

    2)

    !function(){
        var str = '欢迎访问我的主页';
        alert(str);
        a++;
     }();

    3)

    ~function(){
        var str = '欢迎访问我的主页';
        alert(str);
        a++;
     }();

    注:在封闭函数前面加;可以避免一些不必要的问题~

    闭包:函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回。

    由于闭包内存不能释放,所以过多的使用会造成内存泄露。

    闭包作用:

    1)将一个变量长期驻扎在内存当中,可用于循环中存索引值。

            var aLi = document.getElementsByTagName('li');
            
            for(var i=0;i<aLi.length;i++)
            {
                (function (i) {     
                    aLi[i].onclick = function () {        
                        alert(i);
                    } 
                })(i);
            }    

    2)私有变量计数器,外部无法访问,避免全局变量的污染。

            var count = aa();
            function aa() {
                var a = 1;
                function bb()
                {
                    a++;
                    return a;
                }
                return bb;
            }
            alert(count());
            alert(count());

    内置对象:

    1)document

      document.referrer  //获取上一个跳转页面的地址(需要服务器环境)

    2)location

      window.location.href  //获取或者重定url地址;

      window.location.search  //获取地址参数部分;

      window.location.hash  //获取页面锚点或者叫哈希值;

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            window.onload = function (){
                var Dat = window.location.search;
                var oSpan = document.getElementById('span01');
                var arr = Dat.split('=');
                var a = arr[1];
                oSpan.innerHTML = a;
            }
        </script>
    </head>
    <body>
        <div>欢迎<span id="span01"></span>来到我的主页</div>
    </body>
    </html>

    3)Math

    Math.random  //获取0-1的随机数;

    Math.floor  //向下取整;

    Math.ceil  //向上取整;

  • 相关阅读:
    Linux驱动学习时间、延迟及延缓操作3
    Windows 系统下Git安装图解
    [整理]Android Intent和PendingIntent的区别
    C++篇实现MD5算法
    重温数据结构——(2)
    重温数据结构——(1)
    红黑树——1.介绍与查找
    Ubuntu Telnet 服务
    文本框垂直居中
    文本框透明无边框
  • 原文地址:https://www.cnblogs.com/gaoquanquan/p/9200661.html
Copyright © 2011-2022 走看看