JavaScript初步理解

简介: JavaScript初步理解

今天看了一篇较为基础的文章,做个简要的总结,把文章内容进行提炼,再加上一些自己的理解。

JavaScript 是怎么运行起来的? (qq.com)

解释型语言和编译型语言

JavaScript 是一种解释型的编程语言,我们可能也听过编译型语言,那两种语言的区别是什么?

首先,我们常说的C++.java.Python 以及JavaScript都属于高级语言,但是计算机唯一可以识别的语言只有机器语言,也就是0和1.所以要把我们认识的代码转成计算机可以识别的语言有两种方式:解释和编译。下图是两种方式的对比。

总结:


编译型“一次编译,无限次运行”。编译器来编译,系统执行。(闭源,常见 C、C ++、Go。);


解释型“一次编写,到处运行”,解释器解释并执行。(开源,要不然运行不了啊,常见的PHP、Ruby、Python 和 JavaScript)


我自己的理解:


编译型就好比我们学校有个翻译机器(编译器),一次性翻译了一篇外国文献,你看的时候非常快(执行效率高),但是完成整个翻译的时候需要花费时间,翻译完成之后(二进制代码)对这个平台(学校)有一定的依赖性。


解释型就好比一个翻译,你说一句,现场给你翻译一句,所以运行时比编译型语言慢很多。


随着即时编译(JIT采用两种方式混合使用)的发展,逐渐缩小两者的差距,V8采用的就是这种技术。(热点代码)

JavaScript 代码的执行过程

字节码(byte code)是一种包含执行程序、由一序列 OP代码(操作码)/数据对 组成的二进制文件。字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。相比机器码,字节码不仅占用内存少,而且生成字节码的时间很快,提升了启动速度。

JavaScript引擎(解释器)

JavaScript引擎是执行JavaScript代码的计算机程序。主流浏览器都内置了JavaScript引擎。所有JavaScript引擎都包含一个调用栈和一个堆。


JavaScript是一种单线程编程语言,浏览器内核中只有一个 JavaScript 引擎线程。原因是作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作 DOM(文档对象模型 将 web 页面与脚本或编程语言连接起来),如果是多线程会带来很复杂的同步问题。


总结:


通过学习,对解释型语言和编译型语言有了总体的了解,又接着 JavaScript深入了解了解释型语言的具体执行过程。其实最后我还有些疑问,比如JavaScript代码的执行过程中最后的编译器和编译方式中的编译器一样吗?解释型语言解释和执行不是都由解释器来做吗,问题先放在着,等着后续的深入学习再来解答吧。

相关文章
|
存储 算法 Java
【算法系列篇】滑动窗口-1
【算法系列篇】滑动窗口-1
|
开发工具
Harbor安装及解决https重定向回http问题
Harbor安装及解决https重定向回http问题
1646 0
|
Java 应用服务中间件 Spring
【Spring Boot 源码学习】@Conditional 条件注解
【1月更文挑战第8天】本篇介绍 @Conditional 条件注解及其衍生注解
470 3
【Spring Boot 源码学习】@Conditional 条件注解
|
5月前
|
算法 UED
【高性能】什么是QPS、RT?
QPS指系统每秒处理请求数,RT为响应时间,二者是衡量Web性能的核心指标。RT影响用户体验,QPS反映系统吞吐能力,两者密切相关。通过优化硬件或架构可提升QPS、降低RT,从而提高系统性能。
804 0
|
移动开发 JSON 前端开发
跨域资源共享(CORS):详解跨域请求的限制与解决方法
跨域资源共享(CORS):详解跨域请求的限制与解决方法
|
运维 监控 网络协议
面对全球化的泼天流量,出海企业观测多地域网络质量
网络监控与分析在保证网络可靠性、优化用户体验和提升运营效率方面发挥着不可或缺的作用,对于出海企业应对复杂的网络环境和满足用户需求具有重要意义,为出海企业顺利承接泼天流量保驾护航。
600 222
|
容器
深入理解 Flutter 鸿蒙版的 Stack 布局:适配屏幕与层叠样式布局
Flutter 的 Stack 布局组件允许你将多个子组件层叠在一起,实现复杂的界面效果。本文介绍了 Stack 的基本用法、核心概念(如子组件层叠、Positioned 组件和对齐属性),以及如何使用 MediaQuery 和 LayoutBuilder 实现响应式设计。通过示例展示了照片展示与文字描述、动态调整层叠布局等高级用法,帮助你构建更加精美和实用的 Flutter 应用。
661 2
|
Java 应用服务中间件 nginx
SpringClould-Gateway和nginx网关的区别
SpringClould-Gateway和nginx网关的区别
752 0
|
存储 网络协议 安全
第一章 计算机网络概述
第一章 计算机网络概述
2985 0
|
机器学习/深度学习 数据采集 编解码
【核磁共振成像】并行采集MRI
【核磁共振成像】并行采集MRI
【核磁共振成像】并行采集MRI
下一篇
开通oss服务