前端面试题汇总

246 阅读5分钟

var,let,const的区别

1.var 的声明会挂载到window上,而const,let不会。
2.var 存在变量提升,const,let不会。
3.let,const,形成块级作用域, var全局的。
4.const一旦声明必须赋值,且不能修改。
5.let,const在块级作用域内会形成暂时死区。

new的过程中做了什么

1.创建一个新对象。
2.将这个新对象的proto指向构造函数的prototype成员对象。
3.将构造函数的this指针指向指向这个新创建的对象。
4.执行构造函数中的代码。
5.返回新对象。

箭头函数有什么作用

1.简化了语法。
2.箭头函数的this是词法作用域。
3.不能用作构造函数,即new. 所以不存在prototype属性。
4.没有arguments的绑定。

this指向

1.全局环境中this指向全局环境。
2.元素绑定事件,函数中的this代表元素本身。
3.可以使用bind,call,apply来改变函数指向。

bind

Function.prototype.bind, f.bind()会创建与函数具有相同函数体与作用域的函数,但是这个新对象的this永远指向bind参数,无论他怎么被调用。

请简述 CommonJS,AMD,CMD,UMD 规范

js的基本数据类型

Array String Number undefined null

浏览器同源策略

协议,域名,端口,任何一个不同都不是同源。防止其他恶意请求修改页面。同源策略限制不同源的页面不能访问cookie,localstroage,indexedDB,不能访问dom,ajax请求不能发送,但有3个标签允许跨域: img,link,script

css重排与重绘

1.重排是指:浏览器计算出各自渲染对象的位置和尺寸大小,并将其安排在正确的位置上,重排也叫回流。
2.引起重排的(元素需要改变位置):浏览器窗口改变,元素大小位置发生改变,添加或删除元素等。
3.重绘:当页面中元素样式的改变并不会影响他所在位置时,浏览器会将样式赋予元素并重新绘制。
4.常见的引起重绘:color,text-decoration。
5.避免方式: 减少dom操作,用class属性,动画的话元素可以设置属性为absolute,不影响其他元素。
6.重排一定会重绘。

relative position相对谁定位

relative相对于自身所在的位置,absolute相对于离自己最近的父元素且position不为static的来定位的。

如何进行前端优化,说出5条

1.减少资源体积,css,js,image等静态资源的压缩,对css资源进行分割,异步路由加载。
2.减少http请求,雪碧图。
3.浏览器缓存
4.css放顶部,js放底部。
5.减少dom操作。
6.cdn

get 和post区别

请求方式 描述
get 请求指定地址的资源,并返回
post 向指定资源提交数据请求,数据被包含在请求体中
head 类似于get请求,只不过返回的数据中没有具体内容,只用于获取报头
put 从客户端向服务器传送的数据用于取代指定的文档内容
DELETE 从服务器删除资源
TRACE 回显服务器收到的请求,主要用于测试和诊断
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器性能

1.get:请求的数据会附在url后面,以?分割url和传输数据,多个参数用&符号连接。
2.get有长度限制,post没有长度限制,post将数据装在请求体中。
3.get后退不会重新发请求,post会重新请求。

HttpOnly

防止恶意脚本盗取cookie

http状态码

304: 未修改,客户端本地缓存最新,使用即可

getOwnPropertyNames 和 hasOwnProperty Object.keys

getOwnPropertyNames:不可枚举属性 hasOwnProperty:可枚举属性

js数据类型

undefined null Number String Boolean object symbol

promise的方法all, race, allSettled any的区别

1.all 只有当所有状态都变为fulfilled时,会变为fulfilled,只要有一个变为rejected,p变为rejected。
2.race 只要有一个状态改变,p的状态就跟着改变。
3.allSettled 等到所有状态结束才返回,始终是fulfilled状态
4.any 只要有一个是fulfilled状态,实例就会变成fulfilled状态。

发布订阅模式

获取数据类型的几种方法

typeOf instanceof Object.prototype.toString.call()

闭包

闭包就是能够访问到函数内部变量的函数

bfc

布局规则
1.计算BFC高度时,浮动元素也参与计算
2.属于同一个BFC的两个box会发生margin重叠

doctype作用是什么

告诉浏览器的解析器用什么文档标准解析这个文档

三种模式的区别

1.标准模式:页面按照html和css的定义渲染。
2.怪异模式:会模拟更旧的浏览器行为。
3.近乎标准: 会实施一种表单元格尺寸的怪异行为,除此之外符合标准定义。

html xhtml xml的区别

html 非常混乱和松散,因为他在有标准之前就实现了。
xml主要用于数据存储和结构,但是json也可以达到相同的效果,并且更加轻量高效,所以xml市场越来越小了。
xhtml基于上面两者,为了解决html混乱问题,由此诞生了html5

对html语义化的理解

1.让页面具有良好的结构和语义,比如p标签代表段落,article代表文章。
2.语义类标签增强了可读性,便于开发和维护。
3.机器友好,更利于爬虫爬取有效信息,还可以支持读屏软件,自动生成目录。

html5与html4的不同之处

1.文档声明类型仅有一型:。
2.新的元素:section,video,progress,canvas,footer,header,mark,summary,audio,

canvas和svg区别

canvas

1.依赖分辨率。
2.不支持事件处理器。
3.弱的文本渲染能力。
4.能够以.png或.jpg格式保存图像。
5.适合图像密集型游戏,许多对象会被频繁重绘。

svg

1.不依赖分辨率。
2.支持事件处理器。
3.不适合游戏应用。
4.适用带有大型渲染区域的的应用程序。(谷歌地图)

meta作用

1.charset:用于描述html文档编码方式。
2.移动端: