百度面试一面凉经

百度面试一面凉经,第1张

webpack 使用实现格式居中重排(回流),重绘如何在编写js代码中避免重排,回流
重排回流详情
1.避免使用JS一个样式修改完接着改下一个样式,最好一次性更改CSS样式,或者将样式列表定义为class的名称
2.避免频繁 *** 作DOM,使用文档片段创建一个子树,然后再拷贝到文档中
3.先隐藏元素,进行修改后再显示该元素,因为display:none上的DOM *** 作不会引发回流和重绘
4.避免循环读取offsetLeft等属性,在循环之前把它们存起来
5.对于复杂动画效果,使用绝对定位让其脱离文档流,否则会引起父元素及后续元素大量的回流是否写过移动端js基本数据类型
null undefine boolean number string symbol bigint判断数据类型的方法。typeof ,instance,object.is,并详细
typeof 是否能正确判断类型?对于原始类型来说,除了 null 都可以调用typeof显示正确的类型。
对于引用数据类型,除了函数function之外,都会显示"object"。需要使用instance, 采用typeof判断对象数据类型是不合适的,采用instanceof会更好
instanceof可以正确判断对象的类型,其内部运行机制是判断在其原型链中能否找到该类型的原型,不能判断原始数据类型,除非自己实现。手写实现深拷贝
浅拷贝的限制所在了。它只能拷贝一层对象。如果有对象的嵌套,那么浅拷贝将无能为力,需要深拷贝。
let map=new WeakMap()
function deep(obj){
    let newobj=null;
    if(typeof obj==="object"&&obj!==null){
        if(map.has(obj)){
            newobj=map.get(obj);
        }else{
            // newobj=obj instanceof Array?[]:{}
            newobj=Array.isArray(obj)?[]:{}
            map.set(obj,newobj)
            for(let i in obj){
                newobj[i]=deep(obj[i])
            }
        }

    }else{
         newobj=obj;
    }
    return newobj
}
实现一个数组,输出没有重复的数组。
var array=[1,2,3,4,3,2,1,5]
function f(arr) {
    if(Array.isArray(arr)) {

        let map = new Map();
        for (let i = 0; i < arr.length; i++) {
            if (map.has(arr[i])) {
                let v = map.get(arr[i]) + 1;
                map.set(arr[i], v)
            } else {
                map.set(arr[i], 1);
            }
        }
        let res=[];
        //map.entries中的item为数组格式,item[0]为key item[1]为value
        // for(let item of map.entries()){
        //     if(item[1]===1){
        //         res.push(item[0]);
        //     }
        // }
        //map.forEach回调函数的第一个值为value,第二个值为key
         map.forEach((value, key) => {
             if (value=== 1) res.push(key);
        },map)
        console.log(res);
    }
}
f(array)

10.map和foreach的区别,
forEach()方法不会返回执行结果,返回值为“undefined”,而map()方法会返回运算结果,会返回一个数组;2、forEach()方法会修改原来的数组,而map()方法不会修改原来的数组。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/940918.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-17
下一篇2022-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存