百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

程序员的 JavaScript 代码该如何让计算机搞懂?

yund56 2025-07-23 21:40 4 浏览

出自程序员之手的 JavaScript 代码,该如何变成计算机所能理解的机器语言呢?本文将带你走进 JavaScript 引擎内部,一探究竟。

作者 | Lydia Hallie

译者 | 弯月,责编 | 屠敏

以下为译文:

JavaScript 很酷(这一点不用我说),但一台机器究竟是怎样理解我们编写的代码呢?作为JavaScript 开发者,我们通常不需要处理编译器的东西。但是,了解 JavaScript 引擎的基础知识,知道它如何将人类能看懂的JS代码变成机器能理解的东西,是绝对是有好处的!

注意:这篇文章主要根据 Node.js 和基于 Chromium 的浏览器使用的V8引擎撰写。

当HTML解析器遇到代码中的script标签时,就会从网络、缓存或者已安装的service worker里加载源代码。这一步的结果就是脚本内容,以字节流的形式返回,这个字节流需要解码器来处理!字节流解码器会在字节流下载的时候进行解码。

字节流解码器根据流中的字节数据来创建符号(token)。例如,0066解码成f,0075解码成u,006e解码成n,0063解码成c,0074解码成t,0069解码成i,006f解码成o,006e解码成n,然后是一个空格。似乎你写了一个function!这是JavaScript的保留关键字,因此就会创建一个符号,然后发给解析器(以及预解析器,我的GIF图里没有说,但我会稍后解释)。字节流中的其余内容也会类似处理。

引擎有两个解析器:一个是预解析器(pre-parser),另一个是解析器(parser)。预解析器只负责尽早检查符号,找出其中的语法错误。这样可以减少在代码中发现错误所需的时间。否则这些错误就要由解析器负责发现了!

如果没有错误,解析器就会根据它从字节流解码器收到的符号创建节点,然后使用这些节点创建一颗抽象语法树,简称AST。

接下来就是解释器(interpreter)出场了!解释器会遍历整个AST,根据AST的内容生成字节码。字节码生成完成后,就会删除AST以释放更多的内存。这样就得到了机器能够运行的代码!

虽然字节码很快,但它还可以更快。字节码在运行的时候会生成信息。它可以检测到哪些行为会更频繁发生,哪些类型的数据会更经常被使用。如果某个函数被调用了许多次,那么就可以通过优化加快速度!

字节码会连同生成的类型反馈一起发送到优化编译器(optimizing compiler)。优化编译器会处理负责处理字节码和类型反馈,然后生成高度优化过的机器码。

JavaScript 是一个动态类型语言,这意味着数据类型经常会变化。如果 JavaScript 引擎每次都必须检查值的类型,那就会非常慢。

然而,JavaScript 的引擎使用了一种叫做内联缓存(inline caching)的方法。它会在内存中缓存代码,期待着以后会用同样的行为返回同样的值!比如,一个函数被调用100次,到目前为止每次都返回同样的值。那么引擎就会假设该函数在第101次调用时依然会返回同样的值。

我们假设有一个函数sum,到目前为止每次调用都使用两个数值作为参数:

上面的调用会返回3!下次被调用时,引擎就会假设我们依然会用两个数值进行调用。

如果这个假设正确,那就不需要进行动态查找,可以直接使用内存中保存的值。否则,如果假设错误,就会进行反优化,将代码从优化过的机器码恢复成原始的字节码。

例如,假设下次调用时传递了一个字符串而不是数值。由于 JavaScript 是动态类型,这样做不会产生任何错误!

这意味着数字2会被强制转换成字符串,然后函数会返回字符串"12"。因此引擎会去执行字节码,然后更新类型反馈。

希望这篇文章对你有帮助性!当然,引擎还有许多其他方面我没有讨论到(如JS heap,call stack等),也许以后会讨论!如果你对JavaScript的内部原理有兴趣,我强烈建议你自己做一些研究,V8是开源的,关于其工作原理的文档也非常好!

原文:
https://dev.to/lydiahallie/javascript-visualized-the-javascript-engine-4cdf

本文为 CSDN 翻译,转载请注明来源出处。

【End】

【成就一亿技术人】各位撸代码的大佬们,CSDN重磅推出升级版原力计划。只要是原创,只要你首发,现在,都拥有上首页的幸运可能。我们衷心地希望,这一代程序员网红就是你,详情戳海报~~

相关推荐

网站制作新手教程是什么?这些步骤要知道

网站建设/网站搭建,咨询可戳「链接」网站制作新手教程是什么呢?对于设计网站的步骤前期的时候是沟通、然后是制作,后面是调试网站,这些都是网站制作的步骤。下面给大家说一下企业用户在网站制作前期沟通步骤,大...

如何制作网站?网站建设的10个关键步骤

拥有一个美观优雅、体验良好的网站,不仅是现代公司的形象工程,更是企业获取客户、服务客户最直接高效的媒介。网站建设是极其专业的工作,需要前期策划、设计界面、开发程序和维护优化等专业人士的参与。这里分享...

企业官网制作流程——网站自己做想“白嫖”吗

人人都想创业,只有创业才能有更好的出路。然而以我们年轻人举例,创业初期都是最困难的时候,特别是资金压力。一个正规的企业,都有一个属于自己的网站,找外面科技公司开价就是几千或者上万,这让很多初创企业断了...

昌乐县公司网站制作详细步骤(昌乐网站优化公司)

在进行昌乐县网站制作之前,公司首先需要确定网站的目标与定位,并了解相关用户群体及其需求。接着进行以下流程:一、需求分析1.确定网站类型:企业宣传型、电子商务型、论坛社交型等。2.收集资料:包括公司简介...

华企商城怎么制作网站教程教你轻松制作网站

说到怎么制作网站我们一般可能会觉得没有头绪不知道从哪里下手,这里华企商城怎么制作网站教程教你轻松制作网站,华企商城是一家可以提供一站式服务的公司,我们不仅可以为客户创建各种类型网网站,而且我们还可以进...

企业网站搭建难吗?如何建立一个小型企业网站?

企业网站搭建难吗?diy小网站不难,如你想小型企业如何开启在线之旅?小伙伴们,今天我要和你们探讨一个话题:企业网站搭建到底难不难?特别是对于小型企业而言,如何轻松入门?跟着我一起来看看。·一、网站搭建...

给公司制作网站,应该做成什么样子?

以我观察,现在的公司网站大部分都是一个模式。就是最简单的网页展示型,仅仅包含了最基础的公司简介、产品详情、联系方式、招聘信息等内容。网站存在的唯一目的,貌似只是告诉人们,“你看,我们公司有个官网!”,...

公司网站如何建立(公司如何创建网站)

要建立一个公司网站,可以按照以下步骤进行:第一步、明确目标确定公司网站的目标和定位。考虑网站的用途是宣传公司形象、推广产品/服务、提供客户支持等,以便确定网站的内容和功能。第二步、域名注册选择一个适合...

公司网站怎么做?「公司网站」(公司网站怎么设计)

每家公司都会有它的网站,因为在这个互联网时代,没有自己的公司网站就不容易被用户找到的,就等于是损失了很多客户资源。那么公司网站怎么做呢?今天教大家做公司网站的简单方法。一、注册域名域名是访问网站的地址...

公司网站制作指南(公司网站制作指南书籍)

一、引言随着互联网的快速发展,公司网站已成为企业展示形象、推广产品、与客户沟通的重要平台。一个优秀的公司网站不仅能提升企业的品牌形象,还能有效吸引潜在客户,增加业务机会。本文将为您详细介绍如何制作一个...

详谈公司网页制作搭建流程步骤有哪些

公司网页制作搭建流程步骤可大致分为以下几个部分:需求分析、策划、设计、开发、测试、上线、维护。下面我将详细介绍每个步骤。一、需求分析需求分析是网页制作搭建流程的第一步。在这个阶段,我们需要与客户沟通,...

怎么制作自己的网站,建网站的详细步骤

自助建站平台通过引入可视化设计网站的创新方式,彻底颠覆了传统网站建设的复杂流程,极大地降低了建站的门槛,使得即便是没有任何技术背景,甚至被戏称为“技术小白”的普通人,也能轻松驾驭这一过程,创造出既具备...

公司网站制作需要几个步骤?附教程

许多公司都会搭建一个属于自己的企业网站,他们利用网站进行宣传、发布产品、招商招聘等等。随着网络技术的进步,网页制作技术也开始成熟起来,有更多的方法和方式能搭建一个网站了。如果你想为你的公司也制作一个企...

企业网站建设流程:制作网站的基本步骤

企业网站建设流程:制作网站的基本步骤企业制作网站一般都会有一套合理的流程步骤,虽说任何企业网站建设都不会有一个固定的模式,但遵循这些指导性的流程步骤,最起码可以提高企业建设网站的效率,同时还能减少建设...

自己如何制作网站,用网站模板轻松做出企业网站

平台的创建,便于人们认识企业,了解企业,所以网站的重要性,大家都知道,可以展示企业文化,企业的产品以及环境,制造网站,花多少钱来制作是企业负责人要重点了解的,今天小编分享在乔拓云,用最简单的方法——复...