JavaScript

JavaScript是一种广泛用于客户端网页开发脚本语言,最常是于HTML上使用,用来给HTML网页添加动态功能。然而JavaScript也被用于不同的接口上,如服务器。它最初由网景公司Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类别。JavaScript是甲骨文公司的注册商标。[4] Ecma国际以JavaScript为基础制定了ECMAScript标准。JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:ECMAScript文档对象模型浏览器对象模型

Netscape在最初将其脚本语言命名为LiveScript,后来Netscape在与Sun合作之后将其改名为JavaScript。JavaScript最初受Java启发而开始设计的,目的之一就是“看上去像Java”[5],因此语法上有类似之处,一些名称和命名规范也借自Java。但JavaScript的主要设计原则源自SelfScheme[6]。JavaScript与Java名称上的近似,是当时网景为了营销考虑与太阳微系统达成协议的结果。为了取得技术优势,微软推出了JScript来迎战JavaScript的脚本语言。为了互用性,Ecma国际(前身为欧洲计算机制造商协会)建立了ECMA-262标准(ECMAScript)。现在两者都属于ECMAScript的实现。尽管JavaScript作为给非程式人员的脚本语言,而非作为给程式人员的编程语言来推广和宣传,但是JavaScript具有非常丰富的特性。

目录

   [隐藏

[编辑]版本标准

JavaScript 已经被 Netscape 公司提交给 ECMA 制定为标准,称之为 ECMAScript,标准编号 ECMA-262。目前最新版为 ECMA-262 5th Edition[7]。符合 ECMA-262 3rd Edition 标准的实现有:

目前 ECMA-262 4th Edition 正在开发的过程中,与其对应的 JavaScript 的版本为 JavaScript 2.0,目前也正在开发过程中。

[编辑]特性

不同于服务器端脚本语言,例如PHPASP,JavaScript主要被作为客户端脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。而随着服务器的强壮,虽然现在的程序员更喜欢运行于伺服端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如AJAX)必须依赖Javascript在客户端进行支持。随着引擎如V8和框架如Node.js的发展,及其事件驱动异步IO等特性,JavaScript逐渐被用来编写服务器端程式。

JavaScript是一种脚本语言,其源代码在发往客户端执行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释执行。直译语言的弱点是安全性较差,而且在JavaScript中,如果一条执行不了,那么下面的语言也无法执行。而其解决办法就是于使用try{}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){}    //這是正確的

而且由于每次重新加载都会重新解译,加载后,有些代码会延迟至运行时才解译,甚至会多次解译,所以速度较慢。

与其相对应的是编译语言,例如C。以编译语言编写的程式在执行之前,必须经过编译,将程式码编译为机器码,再加以执行。

[编辑]JavaScript的Hello World

以下是一个简单的JavaScript Hello World

<!DOCTYPE HTML>
<html>
    <head>
    <title>簡單的JavaScript Hello World</title>
        <script type="text/javascript">
            document.write("Hello, world!");   // 於瀏覽器視窗內直接顯示。
            alert("Hello, world!");            // 於alert裡顯示。
            console.log("Hello, world!");      // 於console裡顯示。IE下需要先开启开发工具控制台
        </script>
    </head>
    <body>
        HTML 內文……
    </body>
</html>

或是在浏览器的地址栏(location bar)中使用javascript:,以互动方式表示:

javascript:alert("Hello world!");

[编辑]版本历史

版本 发布日期 基于 Netscape Navigator Mozilla Firefox Internet Explorer Opera Safari Google Chrome
1.0 1996年3月   2.0   3.0      
1.1 1996年8月   3.0          
1.2 1997年6月   4.0-4.05          
1.3 1998年10月 ECMA-262 1st edition / ECMA-262 2nd edition 4.06-4.7x   4.0      
1.4     Netscape
Server
         
1.5 2000年11月 ECMA-262 3rd 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        
1.8.1   1.8 + Native JSON support + Minor Updates   3.5        
1.8.2   1.8.1 + Minor updates   3.6        
1.8.5   1.8.1 + ECMAScript 5 Compliance   4 9      

[8]

[编辑]比较

ECMA
版本 说明 实现
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实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值