新手日常遇到js的小问题

本文探讨了Cookie的扩展性和可用性优势,如通过加密和限制生命期提高安全性,同时也指出了其数量、长度限制及安全性问题。此外,介绍了JavaScript中的undefined和null的区别,以及数组去重的三种方法。最后,展示了使用JavaScript实现进度条的示例代码。
摘要由CSDN通过智能技术生成

谈谈Cookie的弊端:

优点:极高的扩展性和可用性

1.通过良好的编程,控制保存在cookie中的session对象的大小。
2.通过加密和安全传输技术(SSL),减少cookie被破解的可能性。
3.只在cookie中存放不敏感数据,即使被盗也不会有重大损失。
4.控制cookie的生命期,使之不会永远有效。偷盗者很可能拿到一个过期的cookie。

 

缺点:

1.`Cookie`数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。

2.安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。

3.有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。

null和undefined的区别? 

(1)undefined表示”缺少值”,就是此处应该有一个值,但是还没有定义。典型用法是:

(1)变量被声明了,但没有赋值时,就等于undefined。

(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。

(3)对象没有赋值的属性,该属性的值为undefined。

(4)函数没有返回值时,默认返回undefined。

(2)null表示”没有对象”,即该处不应该有值。典型用法是:

(1) 作为函数的参数,表示该函数的参数不是对象。

(2) 作为对象原型链的终点。

js数组去重

以下是数组去重的三种方法:

Array.prototype.unique1 = function () {
  var n = []; //一个新的临时数组
  for (var i = 0; i < this.length; i++) //遍历当前数组
  {
    //如果当前数组的第i已经保存进了临时数组,那么跳过,
    //否则把当前项push到临时数组里面
    if (n.indexOf(this[i]) == -1) n.push(this[i]);
  }
  return n;
}

Array.prototype.unique2 = function()
{
    var n = {},r=[]; //n为hash表,r为临时数组
    for(var i = 0; i < this.length; i++) //遍历当前数组
    {
        if (!n[this[i]]) //如果hash表中没有当前项
        {
            n[this[i]] = true; //存入hash表
            r.push(this[i]); //把当前数组的当前项push到临时数组里面
        }
    }
    return r;
}

Array.prototype.unique3 = function()
{
    var n = [this[0]]; //结果数组
    for(var i = 1; i < this.length; i++) //从第二项开始遍历
    {
        //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
        //那么表示第i项是重复的,忽略掉。否则存入结果数组
        if (this.indexOf(this[i]) == i) n.push(this[i]);
    }
    return n;
}

 

JavaScript进度条

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .fa{
            width: 400px;
            margin-bottom: 30px;
            border: 1px solid red;;
        }
        .son{
            width: 0px;
            height: 40px;
            background-color: #f0f;
            text-align: center;
            line-height: 40px;
        }
    </style>
</head>
<body>
    <div class="fa">
        <div class="son">
            <span>0</span><span>%</span>
        </div>
    </div>
    <button id="but">安装</button>
    
    <script>
        // 逻辑:1.利用定时器来进行递增操作(width、百分数)
        // 2.当变量 达到400px时,是停止定时器
        let but = document.getElementById('but');
        let div = document.getElementsByTagName('div');
        let span = document.getElementsByTagName('span');
        let timer = null;
        but.onclick = function(){
            let num = 0;
            if(timer==null){
                timer = setInterval(()=>{
                    num +=1;
                    // 给宽进行递增
                    div[1].style.width = num+'px';
                    // 给百分比递增
                    span[0].innerText = Math.ceil(num/400*100);
                    if(num==400){
                        clearInterval(timer);
                    }
                },10);
            }
            
        }

    </script>
</body>
</html>

 

                                                                                                                                                                                                                                                                                     注:源于其它/视频学习!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值