前端面试题整理
针对js的问题
-
let 和 var的区别是什么
var声明的变量都是全局变量,不存在局部变量,有变量提升;let可以声明局部变量,不存在变量提升;不可以对同一个变量进行重复声明...
-
说一下你对promise的理解
1. promise可以用来解决回调地狱
2. 有3种状态,①进行中-pending ②已成功-fulfilled ③已失败-rejected
3. promise对象一旦新建,就会立即执行,无法取消
4. 存在 .then 方法,该方法会返回一个全新的promise对象,因此可以进行链式调用
-
常用的数组去重的方法,举个例子说明
es6新增的Set()方法,结合Array.from()可以进行数组的去重;
例如:const arr = new Set([1,2,3,4,4,5]) Array.from(arr)
因为:Set是es6新增的数据结构,它的成员都是独一无二的,所以可以用来对数组进行去重
也有很多别的方法,这个方法应该是最简洁的一种
-
箭头函数中的this的特点
箭头函数内的this对象,就是定义时所在的对象,而不是使用时所在的对象
-
谈一下对闭包的理解
1. 什么是闭包:能够读取其它函数内部变量的函数
2. 闭包的优点:① 读取函数内部的变量 ② 让这些变量的值始终保存在内存中
3. 闭包的缺点:对内存的消耗很大,在IE中可能会造成内存泄露
-
谈一下对js原型链的理解
js是动态的,且其本身并不提供一个class实现;虽然在es5/es6中引入了class关键字,但只是一个语法糖,js仍然是基于原型的.
js中的对象,都有一个私有属性_proto_指向它的原型对象prototype.这个原型对象也有自己的原型对象,一层层的向上,直到一个对象的原型为Null
-
从在浏览器地址栏输入一个地址,到页面加载完成,这之间发生了什么?
内容太多了,这个文章整理的很详细。。。 -
304状态码的含义
如果客户端发送了一个GET请求,且改请求已经被允许。而文档的内容,自上次请求以来并未发生变化,则服务器应返回304状态码。或者说是,客户端已经执行了GET,但是文件未变化。 -
谈一下cookie的弊端
1. 数量和长度的限制
2. 潜在的安全风险
3. 用户配置可以为禁用
4. 有些状态不可能保存在客户端
-
说一下冒泡排序的过程
...
-
vue中有哪些常用的生命周期钩子函数(如果vue用的很熟练,这个问题是需要能回答出来的)
1. beforeCreate
2. created
3. beforeMount
4. mounted
5. beforeUpdate
6. updated
7. ...
-
vue是如何实现双向绑定的
内容有很多,这个文章介绍的很详细... -
vue组件之间如何通信的(这个需要能够回答出来)
内容有很多,这个文章介绍的很详细... -
vuex是什么,如何使用(这个需要能够回答出来)
是一个容器,包含着应用中大部分的状态;Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。