zoukankan      html  css  js  c++  java
  • 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)标记清除:从根节点遍历,将可用的可达的做个标记,清除一些没有标记的空间,被回收

      

      

  • 相关阅读:
    poj 3068 Bridge Across Islands
    XidianOJ 1086 Flappy v8
    XidianOJ 1036 分配宝藏
    XidianOJ 1090 爬树的V8
    XidianOJ 1088 AK后的V8
    XidianOJ 1062 Black King Bar
    XidianOJ 1091 看Dota视频的V8
    XidianOJ 1098 突击数论前的xry111
    XidianOJ 1019 自然数的秘密
    XidianOJ 1109 Too Naive
  • 原文地址:https://www.cnblogs.com/fewhj/p/12964687.html
Copyright © 2011-2022 走看看