什么是JavaScript?
JavaScript,通常缩写为JS,是一种高级的,解释执行的编程语言。 JavaScript是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。宿主环境:浏览器(web端)、node.js(服务端)
解释型语言和编译型语言
解释型语言
这种编程语言需要利用解释器,在运行时,动态将代码逐句解释(interpret)为机器代码,或是已经预先编译为机器代码的的子程序,之后再运行。
解释型语言:Python Ruby JavaScript PHP
编译型语言
是一种以编译器来实现的编程语言,经过编译器先将代码编译为机器代码,之后再运行。
编译型语言: C语言 C++ Objective-C D语言 C#
解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。
至于Java属于哪一种语言我也不确定
JavaScript存在的意义
JavaScript 作为动态脚本语言最早主要运行在web端,由于Node.js的诞生让JS也可以在服务端中运行。 在客户端,JavaScript在传统意义上被实现为一种解释语言,但在最近,它已经可以被即时编译(JIT)执行。随着最新的HTML5和CSS3语言标准的推行它还可用于游戏、桌面和移动应用程序的开发和在服务器端网络环境运行,如Node.js。
JavaScript 简史
JavaScript的诞生
1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。......网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。
1995年网景招募了布兰登·艾克,艾克在1995年5月仅花了十天时间就把原型设计出来了,最初命名为Mocha,1995年9月在Netscape Navigator 2.0的Beta版中改名为LiveScript,同年12月,Netscape Navigator 2.0 Beta 3中部署时被重命名为JavaScript。JavaScript推出后在浏览器上大获成功。
JavaScript的标准化
1996年11月,网景正式向ECMA(欧洲计算机制造商协会)提交语言标准。1997年6月,ECMA以JavaScript语言为基础制定了ECMAScript标准规范ECMA-262。JavaScript成为了ECMAScript最著名的实现之一
JavaScript的设计思路
(1)借鉴C语言的基本语法;
(2)借鉴Java语言的数据类型和内存管理;
(3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;
(4)借鉴Self语言,使用基于原型(prototype)的继承机制。
JavaScript主要涵盖了哪几部分
ECMAScript,描述了该语言的语法和基本对象
文档对象模型(DOM),描述处理网页内容的方法和接口
浏览器对象模型(BOM),描述与浏览器进行交互的方法和接
ECMAScript标准
ECMAScript是为网景的布兰登·艾克开发的一种脚本语言(JavaScript)制定的标准化规范; ECMA-262 它规定了这门语言的下列组成部分:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
详情地址 www.ecma-international.org/ecma-262/9.…
JavaScript版本(截止到2018)
ECMAScript 1
1997年06月:发布首版
ECMAScript 2
1998年06月:修改规范完全符合ISO/IEC 16262国际标准。
ECMAScript 3
1999年12月发布: 是对ECMAScript标准第一次真正的修改。 新增了对正则表达式、新控制语句、try-catch异常处理的支持,修改了字符处理、错误定义和数值输出等内容。 从各方面综合来看,第3版标志着ECMAScript成为了一门真正的编程语言。
ECMAScript 4
2007年10月ECMAScript 4.0版草案发布 对3.0版做了大幅升级,预计次年8月发布正式版本。 草案发布后,由于4.0版的目标过于激进,各方对于是否通过这个标准,发生了严重分歧。
2008年7月ECMAScript 4.0发布前被废弃 由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激进,ECMA开会决定,中止ECMAScript 4.0的开发(即废除了这个版本)。
ECMAScript 5
2009年12月:完善了ECMAScript 3版本、增加"strict mode,"(严格模式)、以及新的功能,如getter和setter、JSON库支持和更完整的对象属性。
ECMAScript 6
2015年06月:第六版的名字有很多,可以叫ECMAScript 6(ES6),也可以叫ECMAScript 2015(ES2015)。
此版本增加了非常重要的东西:let、const、class、modules、 arrow functions,、template string, destructuring, default, rest argument、binary data、promises等等。
规范地址:www.ecma-international.org/ecma-262/6.… ES6及以上的教程可参考Babel提供的: babeljs.io/learn-es201…
ECMAScript 7
2016年06月:也被称为ECMAScript 2016。完善ES6规范,还包括两个新的功能:求幂运算符(*)和array.prototype.includes方法。
规范地址:www.ecma-international.org/ecma-262/7.…
ECMAScript 8
2017年06月:增加新的功能,如并发、原子操作、Object.values/Object.entries、字符串填充、promises、await/asyn等等。
规范地址: www.ecma-international.org/ecma-262/8.…
ECMAScript 9
2018年06月: ECMAScript 2018 主要包含内容: 异步迭代器:原生支持在 JavaScript 中对异步获取的数据做迭代。 Object Rest/Spread Properties Promise.prototype.finally Template Literal(模板字面量):取消 Escape-Sequenzen 限制
正则表达式: 支持 s (dotAll) 模式 Unicode 属性转义(Property Escape) 支持后行断言(Lookbehind Assertions) 命名捕获组(named capture group
规范地址:www.ecma-international.org/ecma-262/9.…
JavaScript解释器
Google:V8引擎
仓库地址:github.com/v8/v8
讲解:www.cnblogs.com/banyue/p/86…
JavaScript运行机制
JavaScript运行机制讲解 juejin.cn/post/684490…