1、节流和防抖分别是什么?在什么场景下使用?请分别实现一个节流函数和一个防抖函数
节流:节流是将函数接收的调用频率限制在固定的时间间隔。它用于确保目标函数的调用不超过指定的延迟。节流使重复事件发生率降低。
function throttle(func, delay) { let timer; let last; return function() { const context = this; const args = arguments; if(!last) { func.apply(context, args); last = Date.now(); } else { clearTimeout(timer); timer = setTimeout(() => { if((Date.now() - last) >= delay) { func.apply(context, args); last = Date.now(); } }, delay - (Date.now() - last)); } } }
防抖:防抖是指在经过一定时间的情况下才调用该函数。 就像“你的话说完了,我在回复”一样。
function debounce(func, delay) { let timer; return function() { const context = this; const args = arguments; clearTimeout(timer); timer = setTimeout(() => { func.apply(context, args); }, delay); } }
2、有一个输入框,假设用户需要搜索字符串“123”,但是为了友好体验,当用户输入“1“的时候显示“1“的联想词汇“12”然后做视图渲染,输入“12”的时候,显示“12”的联想词汇“123”然后视图渲染。现在由于网络抖动,“12”的联想词结果早于“1”的结果返回,如何处理避免渲染错误?
防抖函数?
3.怎么禁止让js读取cookie?怎么让cookie只在HTTPS下传输?
可以设置httponly,防止被JavaScript读取,也可以制定secure,只在HTTPS下传输;