ch01作用域是什么
JS工作原理每一个细节的批判性思考会渗透到个人思考过程和日常工作中。知其然,也要知其所以然。
程序执行之前会经过三个步骤统称为编译。
细节上+++++
-
词法分析(Tokenizing/Lexing): 将字符组成的字符串分解为有意义的代码块
eg: var a = 2; ===》 分解为var、a、=、2 -
语法分析(Parsing):根据当前词法解析后的数组生成【抽象语法树(Abstract Syntax Tree】
-
代码生成:将抽象语法树(AST)转换为可执行代码(Excutable Code)
++++ 理解作用域 ++++
- 引擎:负责整个JS程序的编译和执行过程
- 编译器:负责语法分析和代码生成等工作
- 作用域:收集所有声明的标识符组成的一系列查询
代码案例解析:【var a = 2;】
引擎而言:var a = 2; 可以分为两个完全不同的声明,【编译器在编译时处理】&【引擎在运行时处理】
作用域:一系列变量的访问规则
=> 细节上
- 编译器首先对var a;进行处理,会判断当前作用域集合中是否已经存在一个a的变量,如果有则忽略该声明继续编译否则会在当前作用域集合中重新声明一个新变量:a
- 编译器为引擎生成运行时代码,之后引擎会在当前作用域集合中查找是否存在a的变量如果有则使用这个变量如果没有则继续向上查找该变量,最终没有的话会抛出一个异常!!
- 如果引擎在作用域集合中查找到a变量则将2赋值给该变量。
总结: JS中变量的赋值会存在两个过程。 1. 编译阶段:编译器会在当前作用域中查找是否存在这个a变量如果没有则声明如果有则复用 2. 运行阶段:引擎会在当前作用域集合中查找这个a变量如果存在则将2赋值给a如果没有沿着作用域链查找直到没有找到就会爆出异常⚠
学而不思则罔,思而不学则殆!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2021-05-10 计算机网络期末复习 - 应用题