前端面试问题

1.如何理解闭包

  1. 定义和用法:
    当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的其它变量,如果返 回的这个函数在外部被执行,就产生了闭包。
  2. 表现形式
    使函数外部能够调用函数内部定义的变量。
  3. 变量的作用域
    要理解闭包,首先必须理解Javascript特殊的变量作用域。
    变量的作用域分类:全局变量和局部变量。
    特点:
    1、函数内部可以读取函数外部的全局变量;在函数外部无法读取函数内的局部变量。
    2、函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!
  4. 使用闭包的注意点
    1)滥用闭包,会造成内存泄漏:由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
    2)会改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。
    浅谈对闭包的理解

2.如何做性能优化

  1. html语义化
  2. 减少重复代码,压缩css,js代码大小
  3. 背景图片大小及数量
  4. 减少http请求,合理设置缓存
  5. 图片懒加载(lazyout images)
  6. 减少cookie传输
  7. js中减少DOM操作,避免使用eval和 Function,减少作用域链查找(尽量把变量设为局部变量)。
  8. CDN加速
  9. 反向代理
    web前端性能优化总结

3.如何发起ajax请求

(1)创建异步对象。即 XMLHttpRequest 对象。

(2)设置请求的参数。包括:请求的方法、请求的url。

(3)发送请求。

(4)注册事件。 onreadystatechange事件,状态改变时就会调用。

如果要在数据完整请求回来的时候才调用,我们需要手动写一些判断的逻辑。

(5)获取返回的数据。
使用Ajax发送http请求(get&post请求)

4.Jquery中的$(this)和JS中的this的差别

$(this)是Jquery中的对象,而this是html中的元素

$(“this”)是使用标签选择器,查找名为this的标签
$(this)取出当前对象并转换为jQuery对象,用jquery封装的当前对象
this表示的是javascript提供的当前对象,可以直接用this.style修改样式

5.跨域

跨域

6.JSON和JSONP的区别

JSON是一种基于文本的数据交换格式,用于描述复杂的数据
JSONP就是一个跨域交互协议,可以理解为,JSONP约定了JSON的这个数据怎样进行传递。

7.浏览器是如何渲染页面

1、处理HTML标记并构建DOM树
2、处理CSS标记并构建CSSOM树
3、将DOM与CSSOM合并成一个渲染树
4、根据渲染树来布局,以计算每个节点的集合信息
5、将各个节点绘制到屏幕
前端进阶——浏览器页面渲染过程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值