var,let,const区别,及闭包,防抖与节流

91 阅读1分钟

varlet/const的区别:

  1. 块级作用域
  2. 不存在变量提升
  3. 暂时性死区
  4. 不可重复声明
  5. let、const声明的全局变量不会挂在顶层对象下面

const命令两个注意点:

  1. let可以先声明稍后再赋值,而const在 声明之后必须马上赋值,否则会报错
  2. const 简单类型一旦声明就不能再更改,复杂类型(数组、对象等)指针指向的地址不能更改,内部数据可以更改。

let、const使用场景:

  1. let使用场景:变量,用以替代var
  2. const使用场景:常量、声明匿名函数、箭头函数的时候。

闭包: 能访问其他函数中变量的函数

 function bibao(arr){
    for(var i = 0; i< arr.length; i++){
        (function(j){
            setTimeout(function(){
                console.log(arr[j]);
            }, 1000);
        })(i)
    }
}
var arr = [1,2, 3]
bibao(arr);

防抖:在给定时间段内只发生一次调用,如果在这段时间内有触发,则延长时间后再触发。

function fangDou(){
    var timeout;
    return function(){
        if(timeout) clearTimeout(timeout);
        timeout = setTimeout(function(){
            // 业务逻辑
            console.log('nnnnnn');
            
        }, 5000);
    }
}
const sb = fangDou();
sb();

节流:在给定时间段内多次触发,只触发一次

function jieLiu(){
    var timeout;
    return function(){
        if(timeout){
            return false;
        }
        timeout = setTimeout(function(){
            // 业务逻辑
            console.log('jiejiejiejiejieliu');
            timeout = null;
        },3000);
    }
}
const sbb = jieLiu();
sbb();