最近遇到的面试题,欢迎大家把自己的答案和文章链接留下来,互相学习

99 阅读1分钟
如何让请求按照顺序执行
localStorage、sessionStorage的区别
localStorage、sessionStorage、cookie的区别
事件循环机制
强缓存和协商缓存
首屏的性能优化
深拷贝和浅拷贝的区别
Promise的状态
宏任务和微任务有哪些
原型链
跨域产生的原因,如何解决跨域的问题
localStorage存储的空间有限,如果数据过大怎么解决
new操作符做了什么
如何实现按钮级别的权限控制
从输入一个URL到展示页面,经历了哪些过程
webpack相关
三次握手、四次挥手
手写一个cloneDeep
防抖节流的区别,使用场景
nextTick的原理
vue2使用了什么API实现的响应式
watch的实现原理
js用正则实现只截取path部分(输出结果为:/a/b/c)
const data = 'https://www.test.com/a/b/c?a=1&b=2/#/test1';
function getPath() {
    // 必须使用正则表达式补全代码最后输出结果为:/a/b/c
};
    // 输出下面代码执行结果
    var getFool = function() {
        console.log('fool2')
    }

    function getFool() {
        getName = () => {
            console.log('fool');
        };
        console.log('fool1')
        return this;
    }

    getFool.getName = function() {
        console.log('fool3')
    };

    getFool.prototype.getName = function() {
        console.log('fool4')
    };

    getFool()
    getFool.getName();
    new getFool().getName();
    new new getFool().getName();
    // 迷惑题,写出输出结果,如何让输出结果是:0,1,2,3,4,5,6,7,8,9
    function getData() {
        const data = [];
        for (let i = 0; i < 10; i++) {
            data[i] = function () {
                console.log(i);
            }
        }
        return data;
    }

    const data = getData();
    for (let j = 0; j < 10; j++) {
        data[j]();
    }
// 输出结果
(function() { return '1' },function() { return '2' })()