面试题总结

什么是闭包?为什么使用?简述闭包的优点和缺点

外部函数嵌套内部函数,内部函数在外部调用

重用一个变量,并且保证该变量不被污染

 

解决全局变量和局部变量都具有不可兼得的优缺点

全局变量:可重用但是容易被污染

局部变量:仅在函数内部可用,不会被污染,不可重用

 

闭包的缺点:

   比普通函数占用更多的内存。

   解决:闭包不在使用时,要及时释放。

   将引用内层函数对象的变量赋值为null

 

什么是回流(reflow)和重绘(repaint)?

回流:浏览器在渲染页面的时,某个部分发生了变化影响了网页的布局

重绘:不改变元素的内部布局

重排:DOM的结构发生改变

 

浏览器渲染器页面的过程

1.解析HTML文件,创建DOM

2.解析CSS

3.CSSDOM合并,构建渲染树

4.进行布局和绘制(重排和重绘)

 

什么是同源策略

域名,协议,端口号相同,所有支持javascript的浏览器都会执行这个策略

 

什么是跨域

一个域的页面去请求另一个域的资源

 

jsonp的原理

动态添加一个script标签,通过scriptsrc属性,向服务器请求数据,返回数据并执行回调函数

 

什么是内存泄露,怎么防止

垃圾回收机制就是为了防止内存泄漏的,内存泄漏的含义就是不需要某块内存时他依旧还存在,垃圾回收机制就是寻找不在使用的变量并释放他们的内存,当一个变量的生命周期结束之后他的内存就应该被释放,变量分为全局变量和在函数中产生的局部变量,局部变量在函数调用完成之后它的内存就释放的,而全局变量的生命周期会一直持续到浏览器关闭,所以说使用全局变量过多就会内存泄漏

  1. 当页面中的元素移出时,他绑定的事件没有被移除,就会造成内存泄漏,必须手动将事件解绑  btn.onclick = null;
  2. 当原有的DOM节点移除后,它的子节点没有被移除,解决的办法是先移除子节点,在移除父节点
  3. setTimeout 的第一个参数使用字符串而非函数的话

 

解释高内聚,低耦合

模块独立性就指的是每个模块完成系统独立的功能

高内聚指的是一个模块内部的各个元素联系紧密

低耦合指的是尽量让各个模块之间独立,互不影响,降低模块与模块之间的联系

 

AJAX的步骤

  1. 创建xmLhttpRequest对象
  2. 设置请求的方式
  3. 调用回调函数
  4. 发送请求

 

创建XMLHttpRequest对象

function getXhr(){

var xhr = null

if(window.XMLHttpRequest){

除了ie5ie6以外的浏览器XMLHttpRequestwindow的对象

xhr = new XMLHttpReques();

}else{

ie5ie6以外的浏览器

xhr = new ActiveXObject(‘Microsoft.XMLHttp’);

}

return xhr;

}

function getAjax(url,fn){

var xhr = getXhr();

设置请求的方式

xhr.open(‘get’,url,true)

Xhr.onreadystatuschange = function(){

If(xhr.readyStatus === 4 && xhr.status ===200){

Var datajson =eval(‘(’+xhr.responestText+’)’)

Fn(datajson)

}

}

Xhr.send(null) 如果请求不成功则重置xhr的值

}

getAjax(“data.json”,function(data){

Console.log(data)

})

 

解决AJAX不能前进,后退的问题

通过h5history属性解决,h5新增加了一个window.onpopstate,当用户点击前进,后退按钮时就会触发该事件,返回之前的页面时就会知道那个页面的pageIndexpushStatuspageIndex)就会把当前的pageIndex存起来,在返回这个页面时获取到pageIndex

 

雅虎公司了解吗

雅虎是第一家提供英特网导航服务的网站,创始人是杨致远和大卫·费罗,2005年由阿里巴巴集团全资收购

 

前端的三大框架以及前端的其他框架

Vue.js    Angular.js   React.js   Jquery

Bootstrap  mui   easyUI 

posted @ 2019-11-23 18:46  倔强的代码人  阅读(161)  评论(0编辑  收藏  举报