js是解释型语言?

跟编译型语言相比,解释型语言有几点不同:

1. 运行频率:解释器(Interpreter)一次只解释一行/一段代码,解释完就直接运行,运行后再继续解释下一行/一段代码,直到代码结束。而编译器(Compiler)会一次性将所有代码都编译成机器代码。

2. 运行方式:在解释器(Interpreter)中直接运行代码,不需要可执行文件。

3. 源代码出现的位置:在运行环境中,解释器需要调用源代码。而编译型语言的运行环境只需要调用编译后的可执行文件。

上面的第三点也解释了我们一开始的疑问,JavaScript 运行时需要源代码,而不是一个编译后的可执行文件。所以,我们看不到像 C 语言那样的编译过程和发布用的可执行文件。

解释型语言的优缺点

优点:

1. 解释器可以快速启动。执行代码之前,不需要将代码全部编译,可以直接从第一行代码直接开始解释和执行。

2. 解释型语言独立于平台。对于不同的操作系统或 CPU,只要在该平台上有对应的解释器,解释型语言就可以直接运行。开发人员不需要关心平台问题。

缺点:

1. 解释型语言需要将源代码提供给最终用户。

2. 解释型语言执行效率低。如果在多次循环中执行同一段代码,解释器必须每一次都要做同样的翻译工作。

编译型语言的优缺点

因为两种类型的语言运行方式的不同,所以它们之间的优缺点有时候也是互补的。

优点:

1. 编译型语言执行效率高。一次将全部代码编译完成,可以有更多的时间和机会对代码进行优化。

2. 编译型语言不需要提供源代码给最终用户,只需要提供编译后的可执行文件。

缺点:

1. 编译型语言的可执行文件无法移植到不同平台。开发人员需要针对不同平台提供不同的可执行文件。

总结:

V8 引擎执行 JavaScript 代码的过程更像是编译型和解释型的结合体。那么如何理解以这种方式运行的 JavaScript 语言?

现在的 JavaScript 语言,并不是一行一行的解释执行,也不是全部编译后再执行。

大概的流程是,先编译当前必须的代码并执行,然后再去编译下一步必须的代码再执行。比如,一个函数是在用户点击某个按钮时才会运行,那么在用户点击按钮之前这个函数就不会被编译执行。

所以,现在的 JavaScript 语言就像是不停地重复编译-执行流程的编译型语言。

来源:https://zhuanlan.zhihu.com/p/601871778

JavaScript ( JS ) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言相关推荐

  1. html引入原生js,html怎么引用JavaScript?html引入js路径四种方式

    html是静态的页面,如果我们想要实现某些动画效果,就要引入一些js,那么,如何在html中引用一些js文件呢,引入js有哪些方式呢,下面我们来总结一下html引入js路径四种方式. 一:html怎么 ...

  2. js高级04-- 沙箱模式、函数的4种调用模式(call()、apply())、构造函数的return关键字

    沙箱: <script>//沙箱//与外界隔绝的一个环境,外界无法修改该环境内任何信息,沙箱内的东西单独属于一个世界//360沙箱模式//将软件和操作系统进行隔离,以达到安全的目的//苹果 ...

  3. php加密js函数输出,PHP加密函数 Javascript/Js 解密函数的实现方法

    这篇文章主要为大家详细介绍了PHP加密函数 Javascript/Js 解密函数的实现方法,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧! 以下函数代码 ...

  4. php中的js弹窗,浅谈javascript中的三种弹窗

    js中三种弹窗 1)alert 弹出警告 无返回值---------alert('第一行\n第二行'); 2)confirm()选择确定或取消,返回t或f----var result = confir ...

  5. 《 JavaScript程序设计》—— 第五章 函数

    5.1 黑盒 从概念上讲,函数接受输入,进行计算,然后产生输出.下图是一个函数黑盒示意图,它计算一个账户在t年之后的余额,其初始余额为p,年利率为r,每年取n次复利. 要使用这个函数,只需向函数发送四 ...

  6. 【ES6】JS第7种数据类型:Symbol

    [ES6]JS第7种数据类型:Symbol 一.Symbol的由来 二.Symbol的涵义 三.Symbol的判等 四.Symbol的运算与转化 查看更多ES6教学文章: 参考文献 引言:我们知道JS ...

  7. Vue.js 2.x render 渲染函数 JSX

    Vue.js 2.x render 渲染函数 & JSX Vue绝大多数情况下使用template创建 HTML.但是比如一些重复性比较高的场景,需要运用 JavaScript 的完全编程能力 ...

  8. Js 变量声明提升和函数声明提升

    Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...

  9. 异步加载js的三种方法

    js加载时间线 : 它是根据js出生的那一刻开始记录的一系列浏览器按照顺序做的事,形容的就是加载顺序,可以用来优化什么东西,理论基础,背下来. 1.创建Document对象,开始解析web页面.解析H ...

最新文章

  1. 【c语言】蓝桥杯算法提高 统计平均成绩
  2. PIL图像处理:旋转图像
  3. 您如何查看MySQL用户权限
  4. 基于Nginx+FastDFS搭建图片文件系统
  5. Ext FormPanel布局 (一行显示两对控件元素)
  6. 【转】DCT变换的透彻解析
  7. Invalid character found in the request target. The valid characters are defi
  8. 机器学习ai选股_自带AI机器学习的MEMS了解一下
  9. 多元线性回归实现代码
  10. VS code 连接Linux服务器
  11. 排序(二分插入排序)
  12. 【数字图像处理】基于SeetaFace2的人脸检测
  13. labelme 语义分割数据集_【综述系列】语义分割研究要用到的数据集介绍(一)...
  14. 定向士官计算机网络技术在部队干什么,定向培养士官是干什么的
  15. Python 之 类 (Tom猫)
  16. 关闭 自带日志_再也不是样子货! 丰田86改装日志(3)
  17. springboot+vue旅游景点酒店预订系统网站
  18. 【转】如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源
  19. JAVA 中的 反射
  20. win7下快速启动栏的快捷方式的位置

热门文章

  1. unity 创建图片ui_unity用户界面UI样式创建插件 Procedural UI Image 2.2
  2. 计算机网络通讯用的路由器hs编码,项目三进出口商品归类习题解答
  3. 界址表、宗地图以图形左上角为起点,顺时针编号很麻烦?本文给你介绍自动批量对图形寻找左上角坐标点,并按顺时针方向进行编号的解决方法,其他任意方位起点及方向编号的原理相同,可以参照本案例修改哦
  4. 学区摇号软件设计_小学摇号,改变了什么?
  5. 面试/深信服科技测试实习电话面试
  6. 中国对年龄的称谓(完整版)
  7. 汽车维修 L9826芯片应用
  8. NVIDIA / Intel 核芯显卡显示 + Nvidia 计算
  9. 第十届ICPC陕西省程序设计竞赛题解(思路分析)
  10. stdarg.h中三个宏va_start ,va_arg\va_end及vsprintf 的应用