JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给 HTML 网页增加动态功能。
在 1995 年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为 JavaScript。但实际上它的语法风格与Self及Scheme较为接近。[1]
为了取得技术优势,微软推出了JScript,CEnvi 推出 ScriptEase,与 JavaScript 同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于 ECMA 标准,因此也称为ECMAScript。
- JavaScript
- 1992 年
- Brendan Eich
- Netscape、Mozilla 基金会
- 脚本语言、基于原型的面向对象
- 动态类型
- 美国
目录
ECMAScript,描述了该语
言的语法和基本对象。[2]
JavaScript是一种属于网络的脚本语言,已经被广泛用于 Web 应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在 HTML 中来实现自身的功能的。[3]
Javascript 脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript 提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。[5]
它最初由Netscape的Brendan Eich设计。JavaScript 是甲骨文公司的注册商标。Ecma 国际以 JavaScript 为基础制定了ECMAScript标准。JavaScript也可以用于其他场合,如服务器端编程。完整的 JavaScript 实现包含三个部分:ECMAScript,文档对象模型,浏览器对象模型。[7]
Netscape在最初将其脚本语言命名为LiveScript,后来 Netscape 在与 Sun 合作之后将其改名为 JavaScript。JavaScript 最初受 Java 启发而开始设计的,目的之一就是“看上去像 Java”,因此语法上有类似之处,一些名称和命名规范也借自 Java。但 JavaScript 的主要设计原则源自Self和Scheme。JavaScript 与 Java 名称上的近似,是当时Netscape为了营销考虑与 Sun 微系统达成协议的结果。为了取得技术优势,微软推出了JScript来迎战 JavaScript 的脚本语言。为了互用性,Ecma 国际(前身为欧洲计算机制造商协会)创建了 ECMA-262 标准(ECMAScript)。两者都属于 ECMAScript 的实现。尽管 JavaScript 作为给非程序人员的脚本语言,而非作为给程序人员的脚本语言来推广和宣传,但是 JavaScript 具有非常丰富的特性。[8]
发展初期,JavaScript 的标准并未确定,同期有Netscape的 JavaScript,微软的 JScript 和 CEnvi 的 ScriptEase 三足鼎立。1997 年,在 ECMA(欧洲计算机制造商协会)的协调下,由 Netscape、Sun、微软、Borland 组成的工作组确定统一标准:ECMA-262。
JavaScript 脚本语言具有以下特点:
(2)基于对象。JavaScript 是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。
(3)简单。JavaScript 语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于 Java 基本语句和控制的脚本语言,其设计简单紧凑。
(4)动态性。JavaScript 是一种采用事件驱动的脚本语言,它不需要经过 Web 服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作 JavaScript 都可直接对这些事件给出相应的响应。
(5)跨平台性。JavaScript 脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个 JavaScript 脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支 持 JavaScript 脚本语言,目前 JavaScript 已被大多数的浏览器所支持。[3]
不同于服务器端脚本语言,例如PHP与ASP,JavaScript 主要被作为客户端脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较青睐于 JavaScript 以减少对服务器的负担,而与此同时也带来另一个问题:安全性。
而随着服务器的强壮,虽然程序员更喜欢运行于服务端的脚本以保证安全,但 JavaScript 仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如AJAX)必须依赖 Javascript 在客户端进行支持。随着引擎如 V8 和框架如Node.js的发展,及其事件驱动及异步 IO等特性,JavaScript 逐渐被用来编写服务器端程序。
JavaScript 是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。直译语言的弱点是安全性较差,而且在 JavaScript 中,如果一条运行不了,那么下面的语言也无法运行。而其解决办法就是于使用 try{}catch(){}︰
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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 语言,以编译语言编写的程序在运行之前,必须经过编译,将代码编译为机器码,再加以运行。
JavaScript 已经被Netscape公司提交给ECMA制定为标准,称之为ECMAScript,标准编号 ECMA-262。目前最新版为 ECMA-262 5th Edition。符合 ECMA-262 3rd Edition 标准的实现有:
-
Microsoft 公司的JScript.
-
Mozilla 的 JavaScript-C(C 语言实现),现名SpiderMonkey
-
Mozilla 的Rhino(Java 实现)
-
Digital Mars 公司的 DMDScript
-
Google 公司的V8
版本 | 发布日期 | 基于 | 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 | |||||
1.8.5 | 2010 年 7 月 27 日 | 1.8.1 + ECMAScript 5 Compliance | 4 | 9 | 11.60 |
版本 | 说明 | 实现 |
---|---|---|
ECMA v1 | 标准化了 JavaScript1.1 的基本特性,并添加了一些新特性。没有标准化 switch 语句和正则表达式。 | 由 Netscape 4.5 和 IE 4 实现。 |
ECMA v2 | ECMA v1 的维护版本,只添加了说明 | 由 Netscape 4.5 和 IE 4 实现。 |
ECMA v3 | 标准化了 switch 语句、异常处理和正则表达式。 | 由 Mozilla、Netscape 6 和 IE 5.5 实现。 |
HTML |
|
---|
XML |
|
---|
Web 脚本 |
|
---|
Serv 脚本 |
|
---|
.NET |
|
---|
多媒体 |
|
---|
文档呈现语言 |
|
---|
样式格式描述语言 |
|
---|
动态网页技术 |
|
---|
客户端交互技术 |
|
---|
客户端脚本语言 |
|
---|
标识定位语言 |
|
---|
文档纲要语言 |
|
---|
转自:百度百科