JavaScript 是如何工作的?

JavaScript 是一种动态类型、跨平台的线程化脚本和编程语言,用于在客户端添加功能和交互性,以及编写网站的服务器端逻辑。它可以用于显示内容更新、交互式地图、控制多媒体、交互式表单等等。

JavaScript,简称 JS,于 1995年由当时就职于 Netscape Communications 的 Brendan Eich 创造。起初,它的设计初衷是为网站增加交互性。如今,JavaScript 已经可以同时支持客户端和服务端的开发。它在现代 Web 应用程序中扮演着至关重要的角色,帮助开发者操作文档对象模型 (DOM),处理用户事件,并与服务器进行异步通信。

以下是我们要讨论的主题:

目录

  • JavaScript 的演变
  • JavaScript 引擎
  • JavaScript 中的执行上下文
  • JavaScript 中的调用栈与函数调用管理
  • JavaScript 中的异步任务与事件循环
  • 事件循环、回调队列与微任务队列
  • JavaScript 中的内存管理
  • 调用栈与堆 (用于函数执行)
  • JavaScript 中的执行阶段
  • JavaScript 中的变量提升
  • JavaScript 中的 Node.js 运行时
  • JavaScript 中的并发模型
  • JavaScript 中的事件驱动架构
  • JavaScript 的原型继承
  • JavaScript 中对象如何继承属性和方法
  • JavaScript 中的 JIT 编译 (即时编译)
  • JavaScript 中的模块与作用域
  • 结论

JavaScript 的演变

为了满足 Web 开发的需求,JavaScript 经历了巨大的演变:

  • ECMAScript 标准: JavaScript 基于 ECMAScript 标准,该标准定义了语言的语法、语义和库。2015 年发布的 ECMAScript 6 (ES6) 引入了重大增强功能,如箭头函数、类、模块和 Promise。
  • 浏览器兼容性: 早期的 JavaScript 版本在不同 Web 浏览器之间存在差异,这导致了兼容性问题。如今,现代浏览器和 JavaScript 引擎都紧密遵循 ECMAScript 标准,这确保了在不同平台上的行为一致性。

JavaScript 是一种古老的编程语言。起初,它非常基础,但随着 Web 开发需求的增长,JavaScript 也在不断进化。以下是一些关键更新:

  • ECMAScript 3 (1999): 增加了有用的功能,如用于搜索文本的正则表达式和用于处理错误的 try/catch。
  • ECMAScript 5 (2009): 引入了严格模式以帮助捕获错误,并增加了对 JSON (JavaScript Object Notation) 的支持。
  • ECMAScript 6 (2015): 也被称为 ES6,它带来了重大改进,如用于变量声明的 let 和 const,以及使语法更简洁的箭头函数。

JavaScript 还有更多的更新,目前它已经是第 15 版本,即 ECMAScript 2024。

JavaScript 引擎

JavaScript 引擎负责执行 JavaScript 代码。两个最重要的 JavaScript 引擎是 V8(用于 Chrome 和 Node.js)和 SpiderMonkey(用于 Firefox)。这些引擎遵循类似的过程来解释和执行 JavaScript:

JavaScript 引擎如何解释和执行代码?

  • 解析: 当我们加载网页或执行脚本时,JavaScript 引擎首先解析源代码以理解其结构。它将代码转换为抽象语法树 (AST),这是脚本的分层表示形式。
  • 编译:在编译阶段,引擎使用 JIT (即时) 编译将 AST 转换为机器可读的字节码。JIT 编译通过在运行时编译频繁执行的代码段来优化性能。
  • 执行:最后,字节码或机器码被逐行执行,从而产生 JavaScript 代码定义的输出或行为。

示例:在这里,引擎解析 calculateSum 函数,将其编译为字节码或机器码,使用参数 3 和 4 执行它,并将 7 记录到控制台。

JavaScript

function calculateSum(a, b) {
    return a + b;
}

let result = calculateSum(3, 4);
console.log(result); // Output: 7

`

Output

7

JavaScript 中的执行上下文

JavaScript 在执行上下文中运行,执行上下文定义了代码执行的环境。每当我们运行 JavaScript 代码时,都会创建一个新的执行上下文;如果存在任何正常的函数调用(正常的函数是指非箭头函数,或者不是直接定义并调用变量的函数),则该函数的执行上下文会创建在全局执行上下文的内部。如果 t

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/49200.html
点赞
0.00 平均评分 (0% 分数) - 0