• js代码的运行机制


    html 中js 加载机制

    1. 一般情况下,如果遇到js, 会堵塞html渲染,等到js 加载完毕并且执行完毕才会继续渲染html,如果不要这种效果,script 提供了defer 和anysc两种方式

      defer:   js下载和渲染html 同时执行,html渲染完成后,才执行js代码

      async:  js下载和渲染html同时执行,js下载完成后,立即执行js代码,执行js代码过程会堵塞html的渲染

      

    js代码运行分两个阶段

    1.预编译阶段,

      在这个阶段进行变量的提升,将变量赋值为undefined;函数的声明提升

    2. js执行阶段

      js 分为同步任务和异步任务,先执行同步任务,在执行异步任务

      异步任务又分为宏任务和微任务,先执行微任务在执行宏任务

      宏任务:setTimeout()  ajax回调 事件回调(鼠标键盘事件)

      微任务:promise await    process.nextTick(node中的)

      流程图:

    js中的内存泄露和垃圾回收

    1.内存泄露: 不再用到的内存,没有及时释放,就会导致内存泄露 。

    2. 导致内存泄露的几种情况:

      1)意外的全局变量  在函数中定义全局变量

      2)被遗忘的计时器

      3)滥用闭包,闭包中内部函数持有外部函数的变量,导致在闭包外可以引用闭包里面的变量

      4)脱离 DOM 的引用   dom元素绑定了事件,在元素删除后,事件还存在,导致的内存泄露

    3.垃圾回收

      1)最常用的是标记清除的方式,其次还有引用计数的方式

      2)标记清除:从根节点遍历,将可用的可达的做个标记,清除一些没有标记的空间,被回收

      

      

  • 相关阅读:
    实用的SpringBoot生成License方案
    实用的jar包加密方案
    整合Atomikos、Quartz、Postgresql的踩坑日记
    CentOS7使用NTP搭建时间同步服务器
    初探Mysql架构和InnoDB存储引擎
    postgresql常用命令
    闲聊CAP、BASE与XA
    还原面试现场-ACID与隔离级别
    图片拖动并交换图片-使用观察者模式
    图片拖动并交换图片
  • 原文地址:https://www.cnblogs.com/fewhj/p/12964687.html
Copyright © 2020-2023  润新知