深入解释JS|青训营笔记

49 阅读2分钟

深入解释js

01 JS的基本概念

 

单线程 动态 弱类型

面向对象、函数式

解释类语言JIT

安全、性能差(需要宿主环境,浏览器 不能操作本地系统)

参数-结果

 

数据类型:复杂and基础数据类型

基础:字符串 underfined 数字

复杂的数据类型赋予地址,基础数据类型赋予值

 

作用域(动态或者静态):变量的可访问性和可见性

js的作用域是静态的、词法作用域

静态:值只会有一种 通过它就能够预测代码

动态:函数作用域and块级作用域只在花括号内生效{

 

变量提升:var有变量提升  

Let const没有变量提升 提前访问报错9并不纯粹的解释语言也是被经过编辑的)

function函数可以先调用在定义

赋值给变量的函数无法提前调用

 

02js怎么执行

源代码(词法 执行上下文 分析 语法分析)——字节码 节约内存(机器吗 助航解释执行)编译执行——机器吗(优化代码JS 热代码)

一个执行上下文包括 变量环境和词法环境 outer this 可执行代码

当js引擎解析到可执行代码

全局执行上下文:代码开始就会创建,将他压执行栈的栈底,每个生命周期内只有一份

函数执行上下文:当执行一个函数,这个函数内的代码会被编译,生成变量环境、词法环境等,当函数执行结束的时候该执行环境从栈顶弹出

全局执行上下文:变量环境scop  词法环境func

 

词法环境:基于ecmascript代码的词法嵌套结构来定义标识符和具体变量和函数的关联。一个词法环境由环境记录器和一个可能的引用外部词法的空值组成

变量环境var:变量环境和词法环境的一个不同就是前者被用来存储函数声明和变量(let and const)绑定,而后者只用来存储var变量绑定

Outer:指向外部变量环境的一个指针

堆空间的内容

 

03 js的进阶知识

闭包

个人感受:js是一门面向对象的语言,让网页变成代码自由控制设置行为,让我们更加了解前端的内容,但我觉得更重要的是编程的思想,它帮助我更好的理解抽象世界,写出更容易维护的代码,在机器和人类不同语言的世界里遨游是一件很浪漫的事情。