前端面试要点1
1.闭包的特性
- 函数内部嵌套函数
- 函数内部可以引用外部的变量
- 参数和变量不会被垃圾回收机制回收
2.new操作符具体的作用
- 创建了一个空对象,并且this变量引用该对象,同时继承了该函数的原型。
- 属性和方法被加入到this引用的对象中
- 新创建的对象由this所引用,并且最后隐式的返回this
3.同步和异步的区别
- 同步的思想是 : 所有的操作都做完才返回给用户,这样用户在线等待的时间太长,给用户一种卡死的感觉。这种情况下用户不能关闭界面,如果关闭了,那么迁移程序也就中断了
- 异步 : 将用户请求放入到消息队列,并反馈给用户,这就是异步。但是用户没有卡死的感觉,会告诉你,你的请求系统已经响应了,你可以关闭界面了。
- 同步和异步本身就是相对的 : 同步就相当于是 当用户发送请求给服务端,在等待服务器响应时,客户端不能做任何事情。当服务端做完了才返回到客户端,这样的话客户端需要一直等待,用户使用起来会不太友好。而异步就是,当客户端发送服务端请求时,在等待服务器响应时,客户端可以做其他任何事情,这样就节约了时间,提高了效率。但是有些情况同步是必不可免的,比如有些东西我们需要拿到返回的数据再进行操作
4.HTTPS和HTTP的区别
- https协议需要到ca申请证书,一般免费证书较少,因而需要一定的费用。
- http是超文本传输协议,信息是明文传输,https则是具有一定安全性的ssl加密传输协议
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443.
- http的连接很简单,是无状态的;HTTPS协议是由SSL + HTTP协议构建的可进行加密传输,身份认证的网络协议,比hhtp协议安全
5.网络七层协议
- 物理层 , 数据链路层 , 网络层 , 传输层 , 会话层 , 表示层 , 应用层
6.谈谈对this指向的理解,以及改变this指向的方法。
- this指向是相对于函数而言的 , 不同情况下this的指向也会不同。一般来说,this执行的是他的调用者,而定时器的this执行的是windows,箭头函数的this判断只要去掉箭头函数的括号,最里的一层就是他的this指向了
- 改变this指向的方法有 : 1.apply()2.call()3.bind()
7.如何防止XSS攻击
- 使用正则表达式来替换代码中的< script >标签为(script)
- 使用正则判断href = "javascript : " ,并去掉javascript。
- 将输入的回复消息使用textContent设置在容器内。
8.cookie、localStorage、sessionStorage的区别?
特性 | cookie | localStorage | sessionStorage | indexDB |
---|---|---|---|---|
数据生命周期 | 一般由服务器生成,可以设置过期时间 | 除非被清理,否则一直存在 | 页面关闭就清理 | 除非被清理,否则一直存在 |
数据存储大小 | 4K~5k | 5M | 5M | 无限 |
与服务端通信 | 每次都会携带在 header 中,对于请求性能影响 | 不参与 | 不参与 | 不参与 |
从上表可以看到,
cookie
已经不建议用于存储。如果没有大量数据存储需求的话,可以使用localStorage
和sessionStorage
。对于不怎么改变的数据尽量使用localStorage
存储,否则可以用sessionStorage
存储。
9.null和undefined的区别?
- null表示一个对象是 “没有值” 的值,也就是值为空。为undefined表示一个变量声明了但是没有赋值
- null是一个有效的JSON,但undefined不是。
- typeof(undefined) === undefined ; typeof(null) === object
- null == undefined // true; null === undefined // false.