美文网首页前端面试题面试
刷前端面经笔记(六)

刷前端面经笔记(六)

作者: LHH大翰仔仔 | 来源:发表于2019-02-10 12:18 被阅读322次
1.ES6中的let,const,var的区别是什么?

var:声明全局变量;
let:声明块级变量,即局部变量,以后可以修改;
const:用于声明常量,定义后不能再修改值或者引用值的常量,也具有块级作用域;

2.对数组进行去重,es5或者es6方法
//es5四种方式:

//方式一:
Array.prototype.unique1 = function() {
    // 1. 定义数组
    var temp = [];
    // 2. 遍历当前数组
    for(var i = 0; i < this.length; i++) {
        // 3.如果当前数组的第i已经保存进了临时数组,
        // 那么跳过,否则把当前项push到临时数组里面
        if (-1 === temp.indexOf(this[i])) {
            temp.push(this[i]);
        }
    }
    return temp;
};

//方式二:
Array.prototype.unique2 = function() {
    //1. hash为hash表,r为临时数组
    var hash = {}, temp=[];
    // 2.遍历当前数组
    for(var i = 0; i < this.length; i++)
    {
        // 3. 如果hash表中没有当前项
        if (!hash[this[i]])
        {
            // 4.存入hash表
            hash[this[i]] = true;
            // 5.把当前数组的当前项
            // push到临时数组里面
            temp.push(this[i]);
        }
    }
    return temp;
};

//方式三:
Array.prototype.unique3 = function() {
    var n = [this[0]];
    for(var i = 1; i < this.length; i++){
        if (this.indexOf(this[i]) === i) {
            n.push(this[i]);
        }
    }
    return n;
};

//方式四:
Array.prototype.unique4 = function() {
    this.sort();
    var re=[this[0]];
    for(var i = 1; i < this.length; i++)
    {
        if( this[i] !== re[re.length-1])
        {
            re.push(this[i]);
        }
    }
    return re;
};

//es6实现方式:

Array.prototype.unique =
Array.prototype.unique 
|| function () {
    return [...new Set(this)];
};
3.页面加载过程中可能触发哪些事件?它们的顺序是?

页面加载时,大致可以分为以下几个步骤:
1)开始解析HTML文档结构
2)加载外部样式表及JavaScript脚本
3)解析执行JavaScript脚本
4)DOM树渲染完成
5)加载未完成的外部资源(如 图片)
6)页面加载成功
执行顺序:
1)document readystatechange事件
2)document DOMContentLoaded事件
3)window load事件

4.什么是CDN,CDN对于网络有什么意义,它有什么的缺点?

CDN又称为内容分发网络;本意在于尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。
主要目的:解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点的加速、点播、直播等场景。使用户就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度和成功率。
缺点:1)实施复杂,投资大
2)目前大部分的CDN还只是对静态的内容加速,对动态加速效果不好;而双线对动态加速的效果跟静态是一样的。

5.vue-router中route和router的区别?

1)$route为当前router跳转对象里面可以获取namepathqueryparams
2)$routerVueRouter实例,想要导航到不同URL,则使用$router.push方法
返回上一个history也是使用$router.go方法

6.vue路由传参query与params两种方式的区别

query要用path来引入,例如ths.$router.push({ path:"detail",query:{id:"00"}}),接收参数为this.$route.query.idparams要用name来引入,例如ths.$router.push({ name:"detail",params:{id:"00"}}),接收参数为this.$route.params.id。以query传输的参数会在类似于get传参,在浏览器地址栏中显示参数。

欢迎关注

相关文章

  • 刷前端面经笔记(六)

    1.ES6中的let,const,var的区别是什么? var:声明全局变量;let:声明块级变量,即局部变量,以...

  • 刷前端面经笔记(十)

    1.数组方法 1)join()把数组上午所有元素放入一个字符串。元素通过指定的分隔符进行分隔。该方法只接收一个参数...

  • 刷前端面经笔记(十一)

    1.栈的压入和弹出 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压...

  • 刷前端面经笔记(十二)

    1.以下递归函数存在栈溢出的风险,请问如何优化? 解答: 2.请实现一个计算最大公约数的函数: 解答: 3.数组去...

  • 刷前端面经笔记(一)

    1.CSS的盒子模型 包含元素内容content、内边距padding、边框border、外边距marginbox...

  • 刷前端面经笔记(五)

    1.XML和JSON的区别? 1)数据体积方面JSON相对于XML来讲,数据的体积小,传递的速度更快些2)数据描述...

  • 刷前端面经笔记(二)

    1.实现三栏布局(左右两边固定宽度,中间自适应) 1)浮动布局左右两边固定宽度,并分别设置float:left和f...

  • 刷前端面经笔记(三)

    1.var的变量提升的底层原理是什么? JS引擎的工作方式是1)先解析代码,获取所有被声明的变量;2)然后再执行。...

  • 刷前端面经笔记(四)

    1.说说前端中的事件流? 事件流描述的是从页面接收事件的顺序,DOM2级事件流包括下面几个阶段。事件捕获阶段处理事...

  • 刷前端面经笔记(八)

    1.apply,call,bind有什么区别? 三者都可以把一个函数应用到其他对象上,apply,call是直接执...

网友评论

    本文标题:刷前端面经笔记(六)

    本文链接:https://www.haomeiwen.com/subject/wygteqtx.html