javascript_闭包_cookie_ZHOU125disorder_

闭包_cookie

  1. 匿名函数
匿名函数:
没有名字的函数
立即执行的函数
        // 1. 匿名函数
        // 最外侧的括号,是函数的执行符号,代表调用,也可以应用于传参
        (function(){console.log("我的名字叫卡卡西");})();//无参数
        (function(value){console.log(value);})("我的名字叫卡卡西");//有参数
        // 有时候也叫拉姆达函数(入);
        // 写好以后不需要调用,可以立刻自己执行,也叫自执行函数;
        // 由于外部无法引用内部的变量,执行完以后很快就会内存被释放,这种东西不会污染全局对象;
        // 自执行函数,也就是定义和调用合为一体;
  1. 闭包
        // 闭包:
        // 概念:闭包是指有权访问另一个函数作用域种的变量的函数
        // 类型:闭包是函数
        // 作用:访问另一个函数作用域种的变量
        // 创建闭包的常见方式就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量
        function content(){
            var value="我的名字叫卡卡西";
        }
        console.log(value); //无法调用
        function content(){
            var value="我的名字叫卡卡西"
            return value;
        }
        console.log(content());  //可以调用

闭包

        function content(){
            var value="我的名字叫卡卡西";
            // 闭包是什么?如下所示,闭包就是一个函数;
            return function(){
                return value;
            }
        }
        console.log(content()());       //可以访问	 闭包的作用是什么?通过闭包可以访问私有变量
        console.log(value);             //无法访问	内部变量/私有变量
        // 会把变量驻留在内存里
        // 局部变量的生命周期,从声明开始,到所在函数体调用以后被删除

累加 0,1,2,3,4……

		//全局变量生命周期,从声明开始,一直到页面关闭以后删除
        var x=0;
        function add(){
            x++;
            console.log(x);
        }
        setInterval(add,1024);
        // 局部变量生命周期,从声明开始,一直到所在函数体运行以后被删除
		//使用局部变量
        function add(){
            var x = 0;
            x++;
            console.log(x);		//一直是1
        }
        setInterval(add,1024);

使用闭包 累加 0,1,2,3,4……

        function add(){
            var x = 0;
            return function(){
                x++;
                return x;
            }
        }    
       console.log(add()());    //1
       console.log(add()());    //1
     var last_add=add();             //把每次add()的值存储
    console.log(last_add());        //1
    console.log(last_add());        //2
    console.log(last_add());        //3
    last_add=null;                  //not a function
    console.log(last_add());        //无   

闭包

        // 小的总结
        // 闭包概念:在函数外部访问其内部局部私有变量的函数叫做闭包
        // 原理:通过匿名函数讲局部变量驻留在我的内存当中,达到全局变量效果
        // 优缺点
        // 减少了全局变量的使用频率,防止污染
        // 由于闭包作用域返回的局部变量不会及时被销毁释放,所以可能会占用更多内存,过多的情况下会导致内存泄漏

闭包应用
获取下标普通写法

    <script>
        var div=document.getElementsByTagName("div");
        for(var i=0;i<div.length;i++){
            div[i].index=i;
            div[i].onclick=function(){
                alert(this.index);
            }
        }
    </script>

闭包写法

        var div = document.getElementsByTagName("div");
        for(var i=0;i<div.length;i++){
            div[i].onclick = (function(index){
                return function(){
                    alert(index);
                }
            })(i)
        }
      // 需要加自执行函数,加两个()
      // 第一个()包括要调用的函数体
      // 第二个()进行自调用

cookie

        // 原理:本地客户端存储相关数据
        // 网景
        // 通过http协议生成的
        // 登录注册,     购物车添加
        // cookie组成
        // 名/值组成           name = value
        // name = value;[expires=date];
        // name=value是必须的         []里面是可选的
        // []里面的东西代表的是日期,数据存储周期
        // 会话代表的是页面关闭以后就没了
        alert(document.cookie);
        // cookie写入
        document.cookie="user=卡卡西";
        alert(document.cookie);

        // 编码写入
        // 编码和解码
        // 编码:encodeURIComponent()
        // 解码:decodeURIComponent()

        document.cookie = "user="+encodeURIComponent("我的名字叫卡卡西");
        alert(document.cookie);
        alert(decodeURIComponent(document.cookie));

        // setDate()
        // 设置月份当中的某一天
        
        var date = new Date();
        date.setDate(date.getDate()+1);     //一天以后
        document.cookie = "user="+encodeURIComponent("卡卡西")+";expires="+date;
        alert(decodeURIComponent(document.cookie));
        // 删除cookie
        var date = new Date();
        date.setDate(date.getDate()-1);    
        document.cookie = "user="+encodeURIComponent("卡卡西")+";expires="+date;
        alert(decodeURIComponent(document.cookie));
        document.cookie = "user="+encodeURIComponent("卡卡西")+";expires="+new Date(0);//清除
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值