刷面经笔记2019.02.09

1.ES6中的let,const,var的区别是什么?vue

var:声明全局常量;es6

let:声明块级常量,即局部常量,定之后能够修改;vue-router

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脚本this

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跳转对象里面能够获取name、path、query、params等

2)$router为VueRouter实例,想要导航到不一样URL,则使用$router.push方法

返回上一个history也是使用$router.go方法

 

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

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

相关文章
相关标签/搜索