为了取得技术优点,
微软推出了
JScript,CEnvi推出ScriptEase,与JavaScript一样可在浏览器上运行。为了统一规格,由于JavaScript
兼容于ECMA标准,所以也称为
ECMAScript。
组成部分
文档对象模型(DOM),描述处理网页内容的方法和接口。
[2]
浏览器对象模型(
BOM),描述与浏览器进行交互的
方法和
接口。
[2]
基本特色
JavaScript是一种属于网络的脚本语言,已经被普遍用于Web应用开发,经常使用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。一般JavaScript脚本是经过嵌入在HTML中来实现自身的功能的。
[3]
-
是一种解释性脚本语言(代码不进行
预编译)。
[4]
-
-
能够直接嵌入HTML页面,但写成单独的
js文件有利于结构和行为的
分离。
[4]
-
跨平台特性,在绝大多数浏览器的支持下,能够在多种平台下运行(如
Windows、
Linux、Mac、Android、iOS等)。
Javascript脚本语言同其余语言同样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则能够完成较复杂的信息处理。
[5]
平常用途
-
-
-
-
-
-
-
历史
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脚本语言具备如下特色:
(1)
脚本语言。JavaScript是一种解释型的脚本语言,C、
C++等语言先
编译后执行,而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标准的实现有:
-
-
-
-
Digital Mars公司的DMDScript
-
-
版本 |
发布日期 |
基于 |
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实现。 |