疑问

在JS的变量和声明式函数的提升看到了“预编译/预处理/预解释”中“预编译”这个字眼,产生了一个疑问:JS是熟知的解释性语言,但JS能被编译吗?

参考

  1. https://developer.mozilla.org/en-US/docs/Web/JavaScriptJavaScript (JS) is a lightweight interpreted or JIT-compiled programming language** with first-class functions.**
  2. https://zh.wikipedia.org/wiki/JavaScript :** 在客户端,JavaScript在传统意义上被实现为一种解释语言,但在最近,它已经可以被即时编译(JIT)执行。**
  3. https://stackoverflow.com/questions/26709524/javascript-compiled-language
  4. https://www.quora.com/Is-JavaScript-a-compiled-or-interpreted-programming-languageJavaScript used to be purely interpreted but that was many years ago. Nowadays, it is JIT-compiled to native machine code in all major JavaScript implementations.
  5. https://en.wikipedia.org/wiki/Chrome_V8V8 compiles JavaScript directly to native machine code before executing it, instead of more traditional techniques such as interpreting bytecode or compiling the whole program to machine code and executing it from a filesystem.
  6. https://github.com/v8/v8/wiki/IntroductionV8 compiles and executes JavaScript source code, handles memory allocation for objects, and garbage collects objects it no longer needs.
  7. https://softwareengineering.stackexchange.com/questions/138521/is-javascript-interpreted-by-design
  8. https://segmentfault.com/a/1190000013126460
  9. https://www.zhihu.com/question/31415286/answer/58022648

总结

chrome V8可以编译JS to native code
所以JS是一门解释性语言,有编译特性(取决于引擎)。另外,Python是解释性语言,也有编译特性(要查看具体原理)。
一般来说,JS先解析(例如进行变量、函数的提升声明),再运行。

JavaScript - 编译性还是解释性?的更多相关文章

  1. 编译性语言&解释性语言

    计算机是不能理解高级语言.当然也就不能直接执行高级语言了.计算机仅仅能直接理解机器语言,所以不论什么语言,都必须将其翻译成机器语言.不论什么编程语言编写的程序归根究竟都是由底层机器的机器代码(01序列 ...

  2. 通过Anuglar Material串串学客户端开发 - javascript编译和gulpfile.js

    Angular Material不仅仅有本身框架的源代码,还有在这个框架上实现的一个应用docs.更为强大的是,这个应用是真正的产品网站:就是它的官网.我有理由相信,这个网站是从源代码直接发布的,从网 ...

  3. 【前端知识体系-JS相关】你真的了解JavaScript编译解析的流程吗?

    1. JS编译解析的流程 1.1 JS运行分三步 语法分析(通篇扫描是否有语法错误),预编译(发生在函数执行的前一刻),解释执行(一行行执行). 1.2 预编译执行分五步 创建AO对象(Activat ...

  4. javascript编译与运行机理(1)--

    随着学习js的深入就越想了解其内部的运行机理,看了很多文章,感觉下面总结的不错.但囿于个人水平,只是达到了理解层面,还不能提出自己的见解,只好把资料罗列出来,留待以后总结: 1.Javascript的 ...

  5. 初赛Part1

    计算机硬件 CPU CPU(中央处理器) = 运算器(ALC) + 控制器 + 寄存器, 主要任务是执行数据运算和程序控制. CPU的主要性能指标包括主频, 字长 ,高速缓存容量, 指令集等. 主频 ...

  6. Java——Java是什么一门什么语言

    解释型语言 源代码不能直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行: 程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次: 解释性语言代表:Python ...

  7. 多测师_python基本介绍001

    python 一.python的介绍 python 是一门面向对象,解释型,动态类型语言 面向对象:在python中 一切皆为对象 解释型语言:边解释,边执行, 动态类型:就是检查是在运行才做的. 动 ...

  8. Python的介绍与主要方向

    1.1 编程与编程语言 python是一门编程语言,作为学习python的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程? 编程的目的: 计算机的发明,是为了用机器取代/解放人力, ...

  9. python运算符及优先级顺序

    python语言是一门脚本语言,支持面向对象.面向过程编程,兼具编译性和解释性的动态语言,整理出学习过程中一些基本Python运算符和运算符的优先级顺序. 一.算术运算符 运算符 描述 + 加 - 两 ...

随机推荐

  1. Labview初识

    Labview2013安装教程 请访问http://wenku.baidu.com/link?url=Nw4pYpRqMupd9Bn3OfkFBoYM6Hhw9TqWvffZHX-GDQYPCTtqo ...

  2. XSS 1

    首先打开链接https://xss.haozi.me/ 点击打开第一题  然后看一下代码 尝试一下用简单的代码 可不可以通过 例如:<script>alert(1)</script& ...

  3. 快捷键(二):VSCode

    1,打开命令板:F1或Ctrl+Chift+P 2,新建文件:Ctrl+N 3,文件间切换:Ctrl+Tab 4,新开界面:Ctrl+Shift+N 5,关闭当前窗口:Ctrl+W 6,关闭界面:Ct ...

  4. [单片机] ESP8266 开机自动透传

    AT+CWMODE=1//设置WiFi工作在透传模式 AT+CWJAP_DEF="XX","YYY"//设置要链接的wifi名称.密码,并进行连接 //设置TC ...

  5. Nexus坑人系列-interface Unknown state L3 Not Ready

    这个情况也容易出现在新使用设备的时候,当设备上没有L3接口模块的时候,这个问题就出现了. 接下来,尤其是如果我们需要运行VPC(并且如果正在运行N5K,N7K等!),则需要在交换机上配置第3层接口. ...

  6. FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮

    一.Flutter FloatingActionButton 介绍 FloatingActionButton 简称 FAB,可以实现浮动按钮,也可以实现类似闲鱼 app 的地步凸起导航   child ...

  7. RHEL7安装ZABBIX 3.2

    参考并结合: http://blog.sina.com.cn/s/blog_560130f20101bfou.html http://blog.itpub.net/20893244/viewspace ...

  8. 68 for循环2 for循环最简单的用法

    #include <stdio.h> int main (void) { int i ; ; ; i<; i+=) //i+=2 等价于 i= i+2: { sum = sum + ...

  9. PHP基础学习笔记1

    一.基本语法 1.1 形式 PHP 脚本以 <?php 开始,以 ?> 结束: <?php //php代码 ?> 1.2 注释 单行注释 //这是单行注释 多行注释 /* 这是 ...

  10. java调用第三方接口(转载)

    在很多时候有些别人做过的东西直接拿来用就好了,例如:身份证的信息.某个地区的天气.电话归属地等等. 代码 //import com.alibaba.fastjson.JSONObject; impor ...