闭包、内置对象

2019-10-30  本文已影响0人  BJ000

闭包

什么是闭包

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

function aaa(a){     

      var b = 5;     

      function bbb(){

          a++;

          b++;

        alert(a);

        alert(b);

      }

      return bbb;

  }

var ccc = aaa(2);

ccc();

ccc();

改写成封闭函数的形式:

var ccc = (function(a){

  var b = 5;

  function bbb(){

      a++;

      b++;

    alert(a);

    alert(b);

  }

  return bbb;

})(2);

ccc();

ccc();

用处

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

<script type="text/javascript">

    window.onload = function(){

        var aLi = document.getElementsByTagName('li');

        for(var i=0;i<aLi.length;i++)

        {

            (function(i){

                aLi[i].onclick = function(){

                    alert(i);

                }

            })(i);

        }

    }

</script>

......

<ul>

    <li>111</li>

    <li>222</li>

    <li>333</li>

    <li>444</li>

    <li>555</li>

</ul>

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

<script type="text/javascript">

var count = (function(){

    var a = 0;

    function add(){

        a++;

        return a;

    }

    return add;

})()

count();

count();

var nowcount = count();

alert(nowcount);

</script>

内置对象

1、document

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

2、location

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

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

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

3、Math

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

Math.floor 向下取整

Math.ceil 向上取整

4、其他内置对象

Array

String

Date

正则表达式

上一篇下一篇

猜你喜欢

热点阅读