JS 进阶 | 青训营笔记

86 阅读2分钟

JS 进阶 | 青训营笔记

01 JS的基本概念

  • 进程和线程区别:

image.png

  • JS线程和GUI线程是互斥的;

  • JS单纯的是解释型语言吗?执行一行解释一行吗?

    • 因为有var变量提升的情况,所以证明它并不是的,它也需要编译的;
  • 复杂数据类型是可以被改变的,但是基础数据类型不可以被改变。

  • 全局,局部,块级作用域

  • var const let function 赋值function

    • var 有变量提升,const let 没有变量提升,提前访问会报错;
    • function 可以先调用再定义; 赋值给变量的函数无法提前调用;
    function showInfo() {  //function 可以先调用再定义
    console.log(c, d, m);
    }
    
    var show = function () {  //赋值给变量的函数无法提前调用
    console.log(m);
    }
    
    复制代码
    

02 JS是怎么执行的

image.png

image.png

image.png

03 JS的进阶知识点

  • 闭包 闭包(closure)是一个函数以及其捆绑的周边环境状态(lexical environment词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。

  • this 与其他语言相比,函数的 this 关键字在 JavaScript 中的表现略有不同,此外,在严格模式和非严格模式之间也会有一些差别。

    在绝大多数情况下,函数的调用方式决定了 this 的值(运行时绑定)。this 不能在执行期间被赋值,并且在每次函数被调用时 this 的值也可能会不同。ES5 引入了 bind方法来设置函数的 this 值,而不用考虑函数如何被调用的。ES2015 引入了箭头函数,箭头函数不提供自身的 this 绑定(this 的值将保持为闭合词法上下文的值)。

  • 垃圾回收(分堆和栈)

  • 事件循环

04 课程总结

image.png

标题:深入理解 JS - 掘金

网址:juejin.cn/course/byte…