js6

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下传输;

JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里属于IT工程师。