javascript在什么地方执行,javascript在哪里执行

大家好,给大家分享一下javascript在什么地方执行,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

一、运行环境

JavaScript是伴随着浏览器的诞生而诞生,所以JavaScript的执行最多还是在浏览器环境之内。但是JavaScript作为服务端脚本的概念在诞生之初就有,1995年网景公司就提出了服务端JavaScript的概念,并研发了 Netscape Enterprise Server;1996年微软发布的JScript也可以运行在服务端Deepl降重。随着技术的发展各种JavaScript引擎出现,2009年5月Node.js的发布将JavaScript作为服务端脚本推向了一个高潮。关于JavaScript服务端的实现可以参看wikipedia,https://en.wikipedia.org/wiki/List_of_server-side_JavaScript_implementations

JavaScript的运行不像C语言等其他编译型语言编译后直接在操作系统上运行,因为它是脚本语言,运行时必须要借助引擎(解释器)来运行,所以它可以在封装了引擎的环境下运行。封装了JavaScript引擎的环境可以分为两类,一类是浏览器环境;一类是非浏览器环境,比如Node.js、MongoDB。我没有采用wikipedia中clent-side和server-side的直接翻译,因为JavaScript既可以编写服务端脚本也可以编写shell脚本,甚至图形界面应用程序。

把运行环境分为浏览器环境和非浏览器环境是因为他们提供了截然不同的操作模块。浏览器环境下JavaScript由三部分组成,分别是ECMAScript、DOM和BOM,BOM和DOM是针对浏览器环境所扩展的操作方法。非浏览器环境,比如Node.js,也是以ECMAScript为基础,扩展出了I/O操作、文件操作、数据库操作等等;在MongoDB中则是可以作为shell脚本操作数据库;在Eclipse e4中可以编写扩展。

二、运行机制

了解了JavaScript的运行环境,我们来看看运行机制。这里我们不再谈微软的JScript,一方面写本文时我没有找到详尽的介绍JScript的资料,另一方面JScript的应用现在不常见。

JavaScript是个什么样子,取决于它初始应用于哪里,它是作为浏览器的脚本出现,主要用途是解决网页中的用户交互。页面中的用户交互行为会让页面中的DOM元素产生变化,比如用户输入信息后的反馈提示等等。JavaScript在浏览器环境中操作DOM,为避免复杂的同步问题,决定了它采用单线程。如果同时有多个线程,有的在DOM节点上添加内容,有的修改了整个节点,甚至有的删除了整个节点,这个时候很难判断到底采用哪个线程的结果。

JavaScript最大的特点就是单线程,在浏览器环境中中是,在非浏览器环境中同样也是。单线程也就意味着JavaScript在同一时间只能进行一项任务,如果有多项任务的话,需要对任务进行排队,完成一个才能继续下一个。

不同的浏览器、不同的引擎、不同的执行环境,执行JavaScript的细节会有差异,但是不变的是单线程和队列。

三、运行过程

在浏览器环境中,JavaScript引擎按<>标签代码块从上到下的顺序加载并立即解释执行。

我们在这里不探究引擎的详尽解释执行细节,比如词法分析、语法分析以及语法树的构造等等,只说它解释执行过程中非常重要的两个时期预编译期(预解析期)和执行期。理解这两个阶段十分有助于理解JavaScript中的一些“奇特”的现象。

在预编译期JavaScript会对var和function的声明在其所在作用域内进行提升,提升的位置相当于所在作用域开始位置。预编译期需要注意下面几个问题:

1.预编译首先是全局预编译,函数体在未调用时不进行预编译
2.只有var和function声明会提升
3.注意是在所在作用域内提升,不会扩展到其他作用域
4.预编译后顺序执行

参考文档:

JavaScript运行环境、运行机制与运行过程 - 简书

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值