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  //向上取整;

 

posted @ 2018-06-19 19:02  高圈圈  阅读(617)  评论(0编辑  收藏  举报