js怎么运行,电脑上怎么执行js代码

前言关于JavaScript引擎分析的文章后续会写一个系列,本文是该系列的第一篇,是关于JS引擎,运行时间和调用栈的部分。通过本系列文章的阅读,相信你对JavaScript引擎应该会有比较深入的理解。

前言

关于JavaScript引擎分析的文章后续会写一个系列,本文是该系列的第一篇,是关于JS引擎,运行时间和调用栈的部分。通过本系列文章的阅读,相信你对JavaScript引擎应该会有比较深入的理解。当然,电脑上怎么执行js代码,欢迎大家关注我,我将持续分享哪些前端层面核心的知识点,希望能给同处前端的你带来一点点收获。关于JavaScript引擎的理解也欢迎大家阅读我写的《》,《》,《》等等。

js怎么运行

1、概述

随着JavaScript越来越流行,很多团队在他们的前端,后端,混合应用和嵌入式的技术栈中扩展或正在扩展JavaScript。

我们常见的执行js代码都是放入到HTML引入后然后通过HTML文件来执行胡查看代码。显然这是比较麻烦的事情,如果你的电脑里面安装了node.js,你可以使用node来直接使用node来运行你想要运行的js文件。

这篇文章是深入理解JavaScript及其工作原理系列的第一篇,通过理解JavaScript构建模块以及其如何工作将会帮助你写出更好的代码和应用。我们也会分享一些关于创建SessionStack时的经验,SessionStack一个轻量级,强壮高性能且时刻保持竞争性的JavaScript应用。

正如GitHut stats展示的那样,JavaScript是目前最活跃,最多push的语言。

如果项目目前非常依赖JavaScript,这意味着开发者必须深入理解JavaScript的内部原理然后才能使用JavaScript去构建好的软件。

几乎所有人都听过V8引擎这个概念,并且大多数人都知道JavaScript是单线程,同时它使用的是回调队列来处理异步操作。在这篇文章里,我们将解释JavaScript是如何运行的。通过知道这些细节,你将会写出更棒的代码。

如果你是一个有经验的JavaScript开发者了,那么希望这篇文章在JavaScript是如何运行这个方面能给你带来一点点新的思考。

2、JavaScript引擎

js怎么运行

现在很流行的一个JavaScript引擎就是Google的V8引擎,他被用在Chrome和Node.js里面。这里有一张非常简单的概览图:

引擎由两个主要组件构成:

1.js是单线程的,他的加载分成两部分,第一个部分是预处理,主要是操作声明式函数,就是function aaa(){} 这类和变量,虽然说处理,也只是拿出来,并没有赋值,赋值是第二阶段运行的。2.如果要实现上述我们的目标,就。

Memory Heap(内存堆) —— 内存分配的地方

Call Stack(调用栈) —— 代码执行的地方

译者注:JS基础数据类型内存是在栈中分配,而对象类型其实是在堆中分配的。可以阅读上面说的《高手进阶之史上最全JS内存管理策略剖析》

3、JavaScript执行环境runtime

这里除了引擎之外还有更多,例如由浏览器提供的Web APIs,就像DOM,AJAX,setTimeout等等。同时,我们还有如此流行的事件循环和回调队列。

译者注:类似于ajax,setTimeout等其实是宿主环境提供的。ECMAScript对象类型主要有以下几种:

(1)本地对象:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError

(2)内置对象:开发者不用明确实例化,只有Gblobal,Math对象

(3)宿主对象:如DOM,BOM等由宿主提供的对象

4、The Call Stack(调用栈)

JavaScript是一个单线程的编程语言,这意味着它有一个单独的调用栈,因此它只能在同一时间做一件事。

1、首先打开苹果手机,并进入浏览器主页。2、其次点击浏览器的脚本运行功能。3、最后导入js脚本,进行运行即可。

调用栈是一种描述我们程序进程的数据结构,如果我们执行一个函数,我们就把这个函数作用域相关的信息放在栈的顶部(称作栈帧),如果我们某一个函数执行结束了,那么我们就删除栈中的第一个栈帧。这就是栈做的事情。

让我们看个例子,请看下列代码:

function multiply(x,y) { return x * y;}function printSquare(x) { var s = multiply(x,x); console.log(s);}printSquare(5);

当引擎开始执行这段代码,Call Stack将会清空,并且开始如下步骤:

function foo() { throw new Error('SessionStack will help you resolve crashes :)');}function bar() { foo();}function start() { bar();}start();

如果这段代码(假设在一个叫做foo.js的文件内)放在Chrome里执行,那么会产生如下的调用栈错误信息。

"栈溢出" —— 这发生在所用内存达到了栈内存的最大值。这很容易发生,尤其是在你用一些不经测试的递归代码时。看一下下面的代码:

function foo() { foo();}foo();

然而,在某些时刻,当函数的调用所用栈内存超过了调用栈的实际大小时,浏览器会做抛出一个错误。

在单线程上运行代码会很简单,你不必处理那些多线程造成的复杂场景 —— 例如,死锁。

你必须先启用设置,才能从快捷指令运行 JavaScript。请参阅iPhone 或 iPad 上“快捷指令”中的高级隐私和安全性设置。

但是在单线程上运行也有限制。因为JavaScript只有一个单一的调用栈。

5、并发 & 时间循环

当调用栈中调用了非常耗时的函数时会发生什么呢?例如,想象你想用JavaScript在浏览器中做一些复杂的图像转换。

你可能会问 —— 这是个问题吗?在栈中执行一个会花费大量时间的函数,会导致浏览器被阻塞而做不了任何事。这意味着浏览器无法渲染页面,不能运行代码,它被卡住了。这将会严重影响你的应用的UI和使用体验。

并且这不是唯一的问题。一旦你的浏览器开始在调用栈内处理大量的任务,那么它就会停止响应很长一段时间。随后大多数浏览器会提示错误,询问你是否想要终止当前的页面。

按照这种情况,这可不是好的用户体验,对吗?那么我们怎么才能在执行耗时的代码的同时又不阻塞UI并且使浏览器保持响应呢?我们的解决方案是异步回调,关于异步为什么能防止浏览器假死可继续阅读《》,《》

上一篇 2023年02月15 01:18
下一篇 2023年02月08 02:54

相关推荐

  • 怎么查看java版本,cmd查java版本

    1.解决思路通过idea工具,比较简单,但需要依赖IDEA开发工具通过IDEA图形化界面快速进行版本对比,多操作几遍即可通过Git原生命令,略微复杂些,但不许要依赖其它工具(1)单击开始——所有程序—

    2023年02月06 202
  • 微信好友上限是多少,微信好友人数开放到10000人

    一个人的微信中有5000个好友,这显然不是一个小数目,而全国达成此“目标”的已经有将近一百万人。但是目前微信好友数量设置上限就是5000人,这意味着达到5000人以后,不能再继续加好友了。不过根据一些

    2023年02月28 265
  • 苹果像素多少,手机像素是越高越清晰吗

    在智能手机市场,除了手机能在外观上做点差异之外,手机像素是越高越清晰吗,更关键的还是后置的影像系统,好看有好用的后置摄像设计能让手机增色不少,就比如华为Mate40系列的星环设计,一度成为消费者心中的

    2023年02月24 279
  • 海盗船内存条怎么样,海盗船内存属于什么档次

    AMD在9月26日正式发布了基于5nmZen4架构的锐龙7000台式机处理器,除了性能方面的升级,这次锐龙7000直接放弃了对DDR4内存的兼容,只支持DDR5内存。此外,AMD专为DDR5内存推出E

    2023年02月06 294
  • 1公里多少步,从微信步数看出男人出轨

    我并不觉得,因为跑得更慢才能跑得更远,1公里配速8分钟并不丢人,从微信步数看出男人出轨,这就是慢跑!坚持和时间会让你变得更加出色!,我们作为大众跑者,仅仅只是为了强身健体,犯不着折腾自己,这玩意儿过犹

    2023年02月26 298
  • value怎么解决,excel出现value的解决方法

    5“#NUM!”错误值的处理方法当公式或函数中某个数字有问题时将产生错误值#NUM!。(1)在需要数字参数的函数中使用了不能接受的参数。例如:开平方根值为-16,是负数,是一个无效的参数,所以返回一个

    2023年01月23 293
  • ps暂存盘怎么设置

    今天讲讲设计师常遇到的问题。不管是初次接触ps的,还是长期工作的设计师,每个人无一例外,都会到遇到ps崩溃的时候,这里我针对其中几个小问题来说说使用ps的时候,该常做的几件事。首先找到编辑,首选项,点

    2023年01月30 215
  • 天猫超市卡怎么用,天猫超市返10元超市卡怎么用

    在关爱通平台,用积分兑换的天猫超市享淘卡后,要及时进行绑定操作。绑定步骤如下:手机端(淘宝APP或者天猫APP都可以,此处以淘宝为例)①打开淘宝APP,使用验证码或帐密登录;天猫超市卡可以通过打开手机

    2023年02月04 201
  • pos机刷卡手续费多少,pos机刷80000需要多少手续费

    第三方支付直连模式再说微信,pos机刷80000需要多少手续费,微信搞了个扫一扫,其实就是把对方的相关信息转变成一个二维码,对方一扫,就复原了这个信息。同样,微信把商户的银行账户信息变成二维码,扫描即

    2023年02月23 249
  • 外卖小哥一个月挣多少,十个送外卖九个负债

    人生的转折点,是你对工作的态度。前段时间,一位外卖小哥晒出了自己的工资单,引发百万网友的激烈讨论。这条长长的工资单上,详细地记录了他工资的每一笔来源:有效总单量1927单,夜宵单量64单,每单1.5元

    2023年02月22 215
  • gps多少钱,车gps多少钱

    gps定位器多少钱一年,车gps多少钱,这个问题其实有点难以回答,要看每个公司的收费标准吧,还要看大家平时都是怎么算的吧。一、GPS定位器的价格GPS定位器差价较大,还有大家选购的套餐,赠送的东西越多

    2023年02月24 279
  • 怎么统计字数,微信查自己写了多少字

    使用Word计算文档字数的方法汇总1、状态栏自动统计在Word软件中只要勾选【统计字数】,然后在文档中录入数据,就会自动统计。1、新建文档打开word软件,新建空白文档。2、录入文字在空白文档中录入文

    2023年02月12 251
  • 百度推广一年多少钱,百度推广须要多少钱

    百度推广开户一般多少钱?百度开户一年得多少钱?首先您需要明白,百度推广的收费标准。客户做百度推广(关键词付费广告)时,涉及的费用主要有2个步骤,一是百度开户时的预存推广费用,百度推广须要多少钱,二是开

    2023年02月19 243
关注微信