1. 程式人生 > >節流函數&防抖函數 柯裏化函數

節流函數&防抖函數 柯裏化函數

高頻 amp top onscroll false 柯裏化 gets element timeout

/*
onscroll
onresize
input
。。。。。


節流函數
讓高頻率事件進行減少觸發變成低頻率事件

var bStop = true;
window.onscroll = function() {
if(!bStop){
return;
}

bStop = false;
setTimeout(()=>{
var t = document.documentElement.scrollTop || document.body.scrollTop;
console.log(t);
bStop = true;
},300)
}

函數防抖
當高頻率事件觸發的時候 我們不需要知道頻繁觸發的過程,只需要知道最後的結果
*/
var timer = null;
window.onscroll = function(){
if(timer){
clearTimeout(timer);
}

timer = setTimeout(()=>{
var t = document.documentElement.scrollTop || document.body.scrollTop;
console.log(t);
},300)
}
</script>

/*
惰性函數 和 柯裏化函數

*/

function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr]
}else{
return getComputedStyle(obj,false)[attr];
}
}


function getStyle(obj,attr){
if(obj.currentStyle){
getStyle = function(obj,attr){
return obj.currentStyle[attr];
}
}else{
getStyle = function(obj,attr){
return getComputedStyle(obj,false)[attr];
}
}
return getStyle(obj,attr);
}

節流函數&防抖函數 柯裏化函數