前端开发面试题收集-JS篇
收集经典的前端开发面试题
setTimeout的时间定义为0有什么用?
- javascript引擎是单线程处理任务的,它把任务放在队列中,不会同步执行,必须在完成一个任务后才开始另一个任务。
- 由于setTimeout可以把任务从某个队列中跳出成为新队列,因此能够得到期望的结果。
怎么理解this
- this指向的总是调用函数的那个对象。
- this一般情况下,是全局对象Global。
什么是闭包
- 闭包是一个概念,我的理解是函数里的函数,能够读取函数内部变量的函数。
- 就是将函数内部和函数外部连接起来的一座桥梁。
- 闭包是不被内存回收机制回收的。
“use strict”有什么作用?
- 严格模式会抛出更多错误,从而发现潜在问题。
- 会禁止某些不稳定的特性,例如去除with关键字,this不再默认指向全局等。
new操作符做了什么工作?
- 创建了一个空对象,并且this变量引用此对象,同时继承了该函数的原型。
- 属性和方法被加入到this引用的对象中。
- 新创建的对象由this引用,并且最后返回this。
延迟加载JS的方式有哪些?
- defer和async
- 动态创建dom
原型继承的原理
- 当查找一个对象的属性时,javascript会向上遍历原型链,直到找到给定名称的属性为止。
什么是AJAX
- AJAX是指一种创建交互式网页应用的开发技术。
- AJAX可以在无需刷新页面的情况下与发起与后端的请求。
什么是跨域,如何做到?
- 基于安全考虑,浏览器只允许javascript访问相同域名下的文档。
- 解决跨域都需要服务端配合。
- JSONP
- 创建一条script标签请求,并带上参数请求后端。
- 后端根据相应的参数包装一个带所需数据的JS函数返回给前端。
- 缺点是只能发出get请求,并难于确定请求是否成功。
- web sockets
- web sockets会发送一个http请求到后端,获取响应后协议会升级为 web socket协议,不受跨域限制。
- 缺点是只有现代浏览器支持。
- CORS
- 后端在头信息中设置允许接收请求的域名即可。
- 缺点是只有现代浏览器支持。
javascript继承有哪些方式?
- 对象冒充
- 原型链
- call
- apply
cookie是什么?都有哪些属性?
- cookie是浏览器提供的一种机制,保存在用户硬盘上,可以在客户端与服务端之间传送。
- 属性有:
- expires 有效时间
- path 能够读取cookie的*目录
- domain 创建cookie所在网页所拥有的域名
- secure 默认是false,如果为true,cookie的传输协议需要为https。
怎么添加、移除、移动、复制、创建和查找节点?
- 添加:
- append
- prepend
- after
- before
- 移除
- remove
- empty
- 替换
- replaceWith
- replaceAll
- 复制
- clone
创建 - creatElement
- createTextNode
查找 - getElementById
- getElementsByTagName
- getElementByName
- clone