返回顶部
首页 > 资讯 > 前端开发 > node.js >JavaScript的运作原理是怎样的
  • 897
分享到

JavaScript的运作原理是怎样的

2024-04-02 19:04:59 897人浏览 八月长安
摘要

javascript的运作原理是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。让我们从浏览器理解的语言开始。浏览器仅理解

javascript的运作原理是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

让我们从浏览器理解的语言开始。

浏览器仅理解0和1s语言,即二进制/位格式的语句。

我们无法轻松地将整个JavaScript转换为位。那么,我们现在该怎么办???

JavaScript引擎:- “嘿,不用担心,我可以为您提供JavaScript文件。”

那么什么是JavaScript引擎?

当将JavaScript文件加载到浏览器中时,JavaScript  Engine会从上到下逐行执行该文件(异步代码将是一个例外,我们将在本系列后面的内容中看到异步代码)。

JavaScript引擎将逐行解析代码并将该代码转换为机器代码(二进制/位格式)。

现在,浏览器可以理解该机器代码并相应地运行。

这是一些JS引擎示例。

JavaScript的运作原理是怎样的

那么这个javascript引擎里面是什么?

这是JavaScript引擎的非常基本的视图。

JavaScript的运作原理是怎样的

内存堆

JavaScript引擎有时无法在编译时分配内存,因此在运行时分配的变量将进入内存堆(内存的非结构化区域)。即使我们退出在堆中分配内存的函数,我们在堆部分中分配的数据/对象仍然存在。

在这里,我们面临一个主要的内存泄漏问题。

那么什么是内存泄漏?

内存堆的空间有限。如果我们继续使用堆空间而不关心释放未使用的内存。当堆中没有更多可用内存时,这将导致内存泄漏问题。

为了解决此问题,javascript引擎引入了垃圾收集器。

什么是垃圾收集器?垃圾回收是内存管理的一种形式。就像一个收集器,它试图释放不再使用的对象所占用的内存。换句话说,当一个变量失去所有引用时,垃圾回收将该内存标记为“无法访问”并释放它。

执行上下文栈

堆栈是遵循后进先出(LIFO)原理的数据结构(进入堆栈的最后一项将是要从堆栈中删除的第一项)。

ECS存储所有功能的执行上下文。执行上下文定义为存储局部变量,函数和对象的对象。

简而言之,每个功能都被推到袋子的顶部。

JavaScript引擎执行此堆栈顶部的功能。

由于JavaScript引擎只有一个ECS,因此一次只能执行一件事情,这是ECS的顶部。这就是使JavaScript单线程的原因。

您一定听说过堆栈溢出。

这意味着什么?-ECS的空间也有限。因此,如果我们继续在堆栈顶部添加功能。在某个时候,将没有更多的空间来添加更多的堆栈框架。在这一点上,我们得到一个堆栈溢出错误。

考虑以下示例。

function heyjs() {     console.log("Hello you are awesome!!!!");     heyJS(); } heyJS();

JavaScript的运作原理是怎样的

好吧,这进入了无限递归,并且我们有一个堆栈溢出错误。

JavaScript的运作原理是怎样的

因此,正如我所提到的,JavaScript是一种简单的线程语言,这意味着它只有一个调用堆栈广告,因此一次只能执行一个语句。

等等,我们也听说过用JavaScript进行异步编程。那么,一次只允许一项任务时,该如何工作?

这是WEB api的和回调队列。

Web API

Web  API不是JS引擎的一部分,而是Web浏览器提供的JavaScript运行时环境的一部分。JavaScript只是为我们提供了一种访问这些API的机制。由于Web  API是特定于浏览器的,因此它们可能因浏览器而异。在某些情况下,某些Web API可能存在于一个浏览器中,而没有出现在另一浏览器中。

例子:-

document.getElementById(); document.addEventListerner(); setTimeOut(); setInterval(); 例:- console.log(“First!”);  setTimeout(() => {     console.log(“Second!”); }, 1000 );  console.log(“Third!”); 

很奇怪吧?

“第二”位于setTimeout内部,因此将在1秒后执行。

幕后到底发生了什么?

JavaScript的运作原理是怎样的

JavaScript的运作原理是怎样的

JavaScript的运作原理是怎样的

1秒钟后,webapi将得到通知,嘿,您有需要立即执行的代码。WebAPI  “哦,这是console.log(),我需要执行它,但是我不能直接执行它。让我们将其发送到Callback Queue”  “嘿,这里是回调的Queue,请将其添加到列表中并执行。”

回调队列

回调队列或消息队列是遵循先进先出原则的队列数据结构(首先插入队列的项目将首先从队列中删除)。它存储所有从事件表移至事件队列的消息。每个消息都有一个关联的功能。回调队列维护消息或方法在队列中添加的顺序。

事件循环

事件循环不断检查执行上下文堆栈是否为空以及事件队列中是否有任何消息。仅当执行上下文堆栈为空时,才会将方法从回调队列移至ECS。

回调队列

“嘿,事件循环请检查ECS是否为空。我有一些需要推送到ECS中的回调”。

事件循环

“队列,请给我回调,ECS现在为空,我将它们压入堆栈以执行它们。”

JavaScript的运作原理是怎样的

最后,最后,我们将获得输出。

// First // Third // Second

这只是JavaScript引擎工作原理的概述。

我将在以后的一些文章中尝试更深入地了解JavaScript引擎。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网node.js频道,感谢您对编程网的支持。

--结束END--

本文标题: JavaScript的运作原理是怎样的

本文链接: https://lsjlt.com/news/82321.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript的运作原理是怎样的
    JavaScript的运作原理是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。让我们从浏览器理解的语言开始。浏览器仅理解...
    99+
    2024-04-02
  • JavaScript内部原理是怎样的
    本篇文章给大家分享的是有关JavaScript内部原理是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。简介Javascript &nbs...
    99+
    2024-04-02
  • JavaScript的运行原理是什么
    这篇文章将为大家详细讲解有关JavaScript的运行原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。扫描器源代码首先被分解成 chunk,每个 c...
    99+
    2024-04-02
  • JavaScript运行机制是怎么样的
    这篇文章主要介绍了JavaScript运行机制是怎么样的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JS的运行机制1. js单线程Java...
    99+
    2024-04-02
  • JavaScript 引擎的运行原理是什么
    这篇文章将为大家详细讲解有关JavaScript 引擎的运行原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。注意:本文主要基于 Node.js 和基...
    99+
    2024-04-02
  • JavaScript的运行原理怎么掌握
    这篇文章主要讲解了“JavaScript的运行原理怎么掌握”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript的运行原理怎么掌握”吧!了解Ja...
    99+
    2024-04-02
  • Laravel-admin运作方式是怎样的
    本篇内容介绍了“Laravel-admin运作方式是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!安装 Laravel-admin首先...
    99+
    2023-07-05
  • JavaScript引擎的运行原理
    这篇文章主要讲解了“JavaScript引擎的运行原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript引擎的运行原理”吧!一些名词JS引擎...
    99+
    2024-04-02
  • RequireJS的奥秘:彻底理解模块化JavaScript的运作原理
    RequireJS是一个模块加载器,允许开发者以异步的方式加载和定义JavaScript模块。它使用一个简单的依赖管理系统,使开发者可以轻松地组织和管理他们的代码。 RequireJS的基本原理 RequireJS的基本原理是将JavaS...
    99+
    2024-02-11
    JavaScript 模块化 RequireJS 模块加载器 依赖管理
  • Javascript作用域问题是怎样的
    本篇文章为大家展示了Javascript作用域问题是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在前端学习中,作用域这个问题一直被广泛提起,什么是作用域,什...
    99+
    2024-04-02
  • react事件原理是怎样的
    react事件原理是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一 前言今天我们来一起探讨一下React事件原理,这篇文章,我尽量用通...
    99+
    2024-04-02
  • C#中泛型的运作原理是什么
    这篇文章给大家介绍C#中泛型的运作原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一.泛型之前的故事#我们肯定会想到用object来作为类型参数,因为在C#中,所有类型都是基于Object类型的。因此Objec...
    99+
    2023-06-07
  • JavaScript中的运算符是什么样的
    这期内容当中小编将会给大家带来有关JavaScript中的运算符是什么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.运算符运算符(operator)也称操作符,是用于实现赋值、比较和执行算术运算等...
    99+
    2023-06-25
  • 基于JavaScript 的操作系统是怎样的
    这篇文章给大家介绍基于JavaScript 的操作系统是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。我想大多数人听说过 Node.js,但是你听说过 NodeOS 吗...
    99+
    2024-04-02
  • JavaScript中逗号运算符是怎样使用的
    今天就跟大家聊聊有关JavaScript中逗号运算符是怎样使用的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。逗点算符可与一组表达式运算符相配合,产...
    99+
    2024-04-02
  • JavaScript 原型链的奥秘:揭示 JavaScript 运作的秘密
    JavaScript原型链是一个非常重要的概念,它可以帮助我们更好地理解JavaScript的运行机制。原型链是JavaScript对象之间的一种关系,它允许一个对象访问另一个对象的所有属性和方法。原型链从一个对象开始,依次指向它的原型...
    99+
    2024-02-06
    JavaScript 原型链 继承 多态
  • 怎样理解HTTPS工作原理
    怎样理解HTTPS工作原理,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。当你打开浏览器,访问某个网站,如果网址旁有个小锁,代表访问的网址是安全的,反之不安全。当我们没有看到...
    99+
    2023-06-17
  • .NET WebSocket核心原理是怎样的
    .NET WebSocket核心原理是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们先深入研究基本概念,以了解Web...
    99+
    2024-04-02
  • PHP原理和安装是怎样的
    PHP原理和安装是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。PHP 是免费的,并且使用非常广泛。同时,对于像微软 ASP 这样的竞争者来说,PHP 无疑是另一种高...
    99+
    2023-06-04
  • JavaScript中的this工作原理
    这篇文章主要介绍“JavaScript中的this工作原理”,在日常操作中,相信很多人在JavaScript中的this工作原理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作