JS基础(1)|青训营笔记

71 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第6天

本堂课的重点

重点的介绍了js同步模式和异步模式,js延迟加载,浅拷贝和深拷贝的要点。对js垃圾回收机制的理解还不够透彻,会在接下来的学习中慢慢补充我的理解。

1.同步模式和异步模式

同步模式:按顺序执行代码,执行代码的顺序和编写代码的顺序是一致的。前一个任务没有执行结束,下一个任务不会执行。

优缺点:同步的执行效率会比较低,耗费时间,但有利于我们对流程进行控制,避免很多不可掌控的意外情况。堵塞

异步模式:所有同步任务都会在主线程上执行,形成一个执行栈;在主线程之外,还有一个"任务队列",如果异步任务有了执行结果,就会在"任务队列"中放置一个事件。等执行栈中的同步任务执行完毕后,就开始读取"任务队列",那些事件对应那些异步任务,如果满足条件,就进入执行栈开始执行。

异步:setTimeout函数,setInterval函数

队列:先进先出

栈:先进后出

2.js垃圾回收机制

js垃圾回收机制是为了防止内存泄漏,垃圾回收机制就是间歇地不定期的寻找不再使用的变量,并释放掉他们所指向的内存。

内存泄漏:不再使用的变量没有被及时的释放。

标记清除

引用计数

3.js代码如何进行延迟加载

(1)将js的具体脚本文件放在文档最底部(body标签结束前),使js脚本最后加载。 
(2)异步:为js脚本文件添加defer属性,加载完毕后按顺序执行。
(3)异步:为js脚本文件添加async属性(esaike),那个先加载完,那个先执行。 
(4)对文档的加载事件进行监听
//文档加载完毕后执行
window.onload=function(){
​
}

4.浅拷贝和深拷贝

浅拷贝:只拷贝引用地址,其中一个对象改变了地址,会影响另一个对象。 深拷贝:是对对象的克隆,开辟了一个新地址,原对象与新对象互不影响。

5.深拷贝的实现方式

(1)Object.assign()拷贝

var stu1 = {
    name:"zhangsan"
}
stu2 = Object.saaign({},stu1);
stu2.name = "lisi"
console.log(stu1);
​
输出结果:{name:'zhangsan'}

(2)JSON序列化 JSON.parse(JSON.stringify(obj))

var stu1 = {
    name:"zhangsan"
}
stu2 = JSON.parse(JSON.stringify(stu1));
stu2.name = "lisi"
console.log(stu1);
​
输出结果:{name:'zhangsan'}