JS 进阶 | 青训营笔记
01 JS的基本概念
- 进程和线程区别:
-
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是怎么执行的
03 JS的进阶知识点
-
闭包 闭包(closure)是一个函数以及其捆绑的周边环境状态(lexical environment,词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。
-
this 与其他语言相比,函数的
this关键字在 JavaScript 中的表现略有不同,此外,在严格模式和非严格模式之间也会有一些差别。在绝大多数情况下,函数的调用方式决定了
this的值(运行时绑定)。this不能在执行期间被赋值,并且在每次函数被调用时this的值也可能会不同。ES5 引入了 bind方法来设置函数的this值,而不用考虑函数如何被调用的。ES2015 引入了箭头函数,箭头函数不提供自身的 this 绑定(this的值将保持为闭合词法上下文的值)。 -
垃圾回收(分堆和栈)
-
事件循环
04 课程总结
标题:深入理解 JS - 掘金