1.BODY中编写的都是HTML标签,JS很多时候需要操作这些元素,首先我们要保证元素加载成功,才可以在JS中获取到,所 以我们通常会把JS放在BODY的末尾。
2. js代码放在head里并且套在window.onload里时就和放在body的末尾效果一样
3. Script标签的async和defer: Defer:开启新的线程下载脚本,使HTML解析完成后执行。如果多个脚本同时生命defer,会按顺序下载和执行,同时会在DOMContentLoaded和load之前执行。意思就是如果HTML解析完成了,脚本还没加载完成,那么一定会等脚本加载完成了才触发DOMContentLoaded。(网上有说defer也不一定按顺序,这个不知道什么情况下不按顺序)
【JS数据渲染机制及堆栈内存】Async:H5新增属性,也是用于异步加载脚本,下载完毕立即执行。有多个脚本使用async的时候,不能保证顺序,如果脚本直接有依赖,是不能使用这个属性。Async会在load之前执行,但是不保证和DOMContentLoaded的执行顺序。
4.栈内存:作用域 (1).提供一个供JS自上而下执行的环境(代码都是在栈中执行的)
(2)由于基本数据类型值比较简单,他们都是直接在栈内存中开辟一个位置,把值直接存储进去的
=>当栈内存被销毁,存储的那些基本值也都跟着销毁了
5.堆内存:引用值对应的空间 1.存储引用类型的值的(对象:键值对 函数:代码字符串)
=>当前堆内存释放销毁,那么这个引用值彻底没了
=>堆内存的释放:当堆内存没有被任何的变量或者其他东西所占用,浏览器会在空闲的时候,自主的进行内存回收,把所有不被占用的堆内存销毁掉(这是webkit内核浏览器的回收机制)
xxx=null 通过空对象指针null可以让原始变量(或者其他东西)谁都不指向,那么原有被占用的堆内存就没有被占用了,浏览器会销毁它。
推荐阅读
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- 前端|web前端dya07--ES6高级语法的转化&render&vue与webpack&export
- JS/JavaScript|JS/JavaScript CRC8多项式 16进制
- JS|VUE学习笔记[30-46]
- 腾讯TEG实习|腾讯实习——Vue解决跨域请求
- 地图|高德地图清除指定覆盖物 自定义覆盖物样式(完整dome)
- Pyecharts|Pyecharts 猎聘招聘数据可视化
- flex|C语言-使用goto语句从循环中跳出
- HTML+Js实战项目|在网页中实现icon小图标的几种方法
- js中国标准时间转化为年月日,时间戳