前端常见面试题(持续更新)

一.闭包

内部函数访问外部函数的变量,就形成了闭包

闭包的作用:变量私有化

如果不进行使用,则会被释放掉的

function fn() {
 
  let num = 10
function inner() {

    console.log(num)
}

}
fn()
//没有对内部进行引用,这是会被直接销毁释放掉的

闭包的正确使用,return

function fn() {
 let count = 10

 function inner() {
   count++
   console.log('函数被调用了' + count + '次')

}
  return  inner
}

let result = fn()
result()

//注意:这里的函数以及变量都没有被释放


//不用则释放
//利用标记清除: 从根部,全局出发,访问不到的内存空间,就会被自动回收
result = null

注意:外部函数中,我们要引用return(里面的函数及变量才不会被释放掉)

二.原型链

谈到原型链我们就得绘制构造函数,原始,实例三者关系的关系图了

1.构造函数 new 实例化对象,实例化对象上有一个__proto__属性,指向构造函数的原型

2.原型对象可以通过constructor访问到构造函数,

3.构造函数可以通过prototype对象原型访问到原型对象

实例访问属性或者方法时,会先在自己身上找,如果没有,则往原型上找,如果还是没有,则会再往上一层的原型上查找,知道顶部,没有则报错

三.首屏加载慢的原因

首屏加载慢指的是用户向浏览器输入的内容,浏览器展示出的时间

原因:1.网络延时问题

2.可能存在文件体积过大

3.资源是否重置发送请求去加载了

4.加载脚本的时候,渲染内容堵塞了

解决:1.静态资源本地缓存

2.图片资源的压缩

3.开启GZip压缩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值