1.Javascript延迟加载有哪些方式
@H_404_2@浏览器解析html全过程
@H_404_2@延迟加载或者异步加载有什么作用
@H_404_2@具体有哪些异步(延迟)加载Javascript的方式
@H_404_2@async
标签或者defer
标签
@H_404_2@
延迟执行
而async
是异步加载,defer
会确保在html解析完毕之后再按defer
顺序执行js,而async
是异步加载,加载完成之后,会直接执行js
,并且执行时,此时会阻塞HTML
解析Script
标签,并且可以设置延迟加载HTML
的解析是自上而下的,所以把script
标签放到最后面,也会使js
在最后加载,也是很多页面js
标签写在最后优化体验的最简单的方式2.call和apply的区别和作用?
@H_404_2@作用:改变this
(函数内部上下文)指向,很多函数内部会直接使用this
指针,指向内部自身对象,并且进行一系列操作,但是如果希望用另一个对象作为该函数的上下文时就需要用到call
和apply
相同点:
@H_404_2@this
(函数内部上下文)指向Function.prototype
,所有函数类方法null
时,函数体内部this
指向默认上下文,可能是window
不同点
@H_404_2@入参接收形式
不一样,apply 后面接收的是一个类数组,而call接受的后面参数是单个的参数会原封的传入原函数
ES6语法的 ...
延展语法,可以更方便的使用call,数组也可以直接解构 function.call(obj,...[arry])
3. 哪些操作会造成内存泄漏
@H_404_2@什么是内存泄漏
@H_404_2@JS中的垃圾回收机制
@H_404_2@GC
garbage collection,自动执行,定时执行,那些操作会造成内存泄漏
@H_404_2@function(){ test = xxx }