目录
- 1产生背景
- 2主要功能
- 3语言组成
- 4运行模式
- 5语言特点
- 6编译模式
- 7语言标准
- 8版本记录
>产生背景
发展初期,JavaScript的标准并未确定,同期有
Netscape的JavaScript,微软的JScript和CEnvi的ScriptEase三足鼎立。为了互用性,
Ecma国际(前身为欧洲计算机制造商协会)创建了ECMA-262标准(
ECMAScript),两者都属于ECMAScript的实现,尽管JavaScript作为给非程序人员的脚本语言,而非作为给程序人员的脚本语言来推广和宣传,但是JavaScript具有非常丰富的特性。
1997年,在ECMA(
欧洲计算机制造商协会)的协调下,由Netscape、Sun、微软、Borland组成的工作组确定统一标准:ECMA-262。完整的JavaScript实现包含三个部分:
ECMAScript,
文档对象模型,浏览器对象模型。
>主要功能
>语言组成
>运行模式
JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
可以直接嵌入HTML页面,但写成单独的
js文件有利于结构和行为的
分离。
JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和
算术运算符及程序的基本程序框架。JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。
>语言特点
JavaScript脚本语言具有以下特点:
(1)
脚本语言。JavaScript是一种解释型的脚本语言,C、
C++等语言先
编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。
(2)基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。
(3)简单。JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。
(4)动态性。JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作JavaScript都可直接对这些事件给出相应的响应。
(5)跨平台性。JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支 持JavaScript脚本语言,JavaScript已被大多数的浏览器所支持。
不同于服务器端脚本语言,例如
PHP与
ASP,JavaScript主要被作为客户端脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。
而随着服务器的强壮,虽然程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如
AJAX)必须依赖JavaScript在客户端进行支持。
>编译模式
JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过
编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。直译语言的弱点是安全性较差,而且在JavaScript中,如果一条运行不了,那么下面的语言也无法运行。而其解决办法就是于使用try{}catch(){},其中,catch()中会传入错误信息。
console.log("a");//这是正确的
console.log("b");//这是正确的
console.logg("c");//这是错误的,并且到这里会停下来
console.log("d");//这是正确的
console.log("e");//这是正确的
/*解决办法*/
try{console.log("a");}catch(e){}//这是正确的
try{console.log("b");}catch(e){}//这是正确的
try{console.logg("c");}catch(e){}//这是错误的,但是到这里不会停下来,而是跳过
try{console.log("d");}catch(e){}//这是正确的
try{console.log("e");}catch(e){}//这是正确的
JavaScript被归类为直译语言,因为主流的引擎都是每次运行时加载代码并解译。V8是将所有代码解译后再开始运行,其他引擎则是逐行解译(
SpiderMonkey会将解译过的指令暂存,以提高性能,称为实时编译),但由于V8的核心部分多数用JavaScript撰写(而SpiderMonkey是用
C++),因此在不同的测试上,两者性能互有优劣。与其相对应的是编译语言,例如
C语言,以编译语言编写的程序在运行之前,必须经过编译,将代码编译为机器码,再加以运行。
注释://被称作行注释,/* */中的内容会被注释。
>语言标准
Digital Mars公司的DMDScript
>版本记录
JavaScript版本版本 | 发布日期 | 基于 | Netscape Navigator | Mozilla Firefox | Internet Explorer | Opera | Safari | Google Chrome |
|---|
1.0 | 1996年3月 |
| 2.0 |
|
|
|
|
|
1.1 | 1996年8月 |
| 3.0 |
| 3.0 |
|
|
|
1.2 | 1997年6月 |
| 4.0-4.05 |
|
|
|
|
|
1.3 | 1998年10月 | ECMA-262 1 edition / ECMA-262 2 edition | 4.06-4.7x |
| 4.0 |
|
|
|
1.4 |
|
| Netscape Server |
|
|
|
|
|
1.5 | 2000年11月 | ECMA-262 3 edition | 6.0 | 1.0 | 5.5 (JScript 5.5), 6 (JScript 5.6), 7 (JScript 5.7), 8 (JScript 6) | 6.0, 7.0, 8.0, 9.0 |
|
|
1.6 | 2005年11月 | 1.5 + Array extras + Array and String generics + E4X |
| 1.5 |
|
| 3.0, 3.1 |
|
1.7 | 2006年10月 | 1.6 + Pythonic generators + Iterators + let |
| 2.0 |
|
| 3.2, 4.0 | 1.0 |
1.8 | 2008年6月 | 1.7 + Generator expressions + Expression closures |
| 3.0 |
| 11.50 |
|
|
1.8.1 |
| 1.8 + Native JSON support + Minor Updates |
| 3.5 |
|
|
|
|
1.8.2 | 2009年6月22日 | 1.8.1 + Minor updates |
| 3.6 |
|
|
|
|
| 2010年7月27日 | 1.8.1 + ECMAScript 5 Compliance |
| 4 | 9 | 11.60 |
|
|
ES2015 | 2015年 | ECMAScript 2015 |
|
|
|
|
|
|
ECMAScript版本版本 | 说明 | 实现 |
|---|
ECMAScript 1 | 标准化了JavaScript1.1的基本特性,并添加了一些新特性。没有标准化switch语句和正则表达式。 | 由Netscape 4.5和IE 4实现。 |
ECMAScript 2 | ECMA v1的维护版本,只添加了说明 | 由Netscape 4.5和IE 4实现。 |
ECMAScript 3 | 标准化了switch语句、异常处理和正则表达式。 | 由Mozilla、Netscape 6和IE 5.5实现。 |
ECMAScript 5 | 添加了“严格模式”。添加了 JSON 支持。添加了 String.trim()。添加了 Array.isArray()。添加了数组迭代方法。 |
|
ECMAScript 5.1 | 编辑改变 |
|
ECMAScript 2015 | 添加了 let 和 const添加了默认参数值添加了 Array.find()添加了 Array.findIndex() |
|
ECMAScript 2016 | 添加了指数运算符(**)。添加了 Array.prototype.includes |
|
ECMAScript 2017 | 添加了字符串填充。添加了新的 Object 属性。添加了异步功能。添加了共享内存。 |
|
ECMAScript 2018 | 添加了 rest / spread 属性。添加了异步迭代。添加了 Promise.finally()。增加 RegExp。 |
|