var和let/const的区别:
- 块级作用域
- 不存在变量提升
- 暂时性死区
- 不可重复声明
- let、const声明的全局变量不会挂在顶层对象下面
const命令两个注意点:
let可以先声明稍后再赋值,而const在 声明之后必须马上赋值,否则会报错- const 简单类型一旦声明就不能再更改,复杂类型(数组、对象等)指针指向的地址不能更改,内部数据可以更改。
let、const使用场景:
let使用场景:变量,用以替代var。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();