面试问题随笔

1.js中的变量提升问题

    变量提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。

    注意:JavaScript 只有声明的变量会提升,初始化的不会

2.数组去重

》1.filter()+indexOf

let arr1=[1,2,3,4,5,1,2,33,4];
arr1.filter((item,index)=>{
	return arr1.indexOf(item)===index;
})
//输出结果[1, 2, 3, 4, 5, 33]

》2.new Set()

//去重
function dedupe(array){
    return Array.from(new Set(array));
}

》3. for...of...

function distinct(a){
    let result=[];
    let obj={};
    for(let i of a){
        if(!obj[i]){
            result.push(i);
            obj[i]=1;
        }
    }
    return result;
}

3.防抖和节流   

防抖和节流是针对响应跟不上触发频率这类问题的两种解决方案。 在给DOM绑定事件时,有些事件我们是无法控制触发频率的。 如鼠标移动事件onmousemove, 滚动滚动条事件onscroll,窗口大小改变事件onresize,瞬间的操作都会导致这些事件会被高频触发。 如果事件的回调函数较为复杂,就会导致响应跟不上触发,出现页面卡顿,假死现象。 在实时检查输入时,如果我们绑定onkeyup事件发请求去服务端检查,用户输入过程中,事件的触发频率也会很高,会导致大量的请求发出,响应速度会大大跟不上触发。

针对此类快速连续触发和不可控的高频触发问题,debounce 和 throttling 给出了两种解决策略;

原文链接:https://blog.csdn.net/hupian1989/article/details/80920324

节流和防抖区别

函数防抖:将多次操作合并为一次操作进行。原理是维护一个计时器,规定在delay时间后触发函数,但是在delay时间内再次触发的话,就会取消之前的计时器而重新设置。这样一来,只有最后一次操作能被触发。
函数节流:使得一定时间内只触发一次函数。原理是通过判断是否有延迟调用函数未执行。
区别: 函数节流不管事件触发有多频繁,都会保证在规定时间内一定会执行一次真正的事件处理函数,而函数防抖只是在最后一次事件后才触发一次函数。 比如在页面的无限加载场景下,我们需要用户在滚动页面时,每隔一段时间发一次 Ajax 请求,而不是在用户停下滚动页面操作时才去请求数据。这样的场景,就适合用节流技术来实现。

作者:LenHong
链接:https://www.jianshu.com/p/b5fcb9a04b17
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

4.事件委托

》事件捕获

5.双向绑定

网址  https://www.cnblogs.com/wangjiachen666/p/9883916.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值