Category:bbbbb 词条打印

在分类 "bbbbb" 中的主题

在分类 "bbbbb" 中的子分类

有 1 个子分类在分类 "bbbbb" 中

Template:Distinguish Template:NoteTA Template:Infobox programming language Template:Infobox file format Template:Lang,一種直譯式程式語言,是一种动态类型、弱类型、基于原型的语言,内置支持類別。它的直譯器被稱為JavaScript引擎,為瀏覽器的一部份,廣泛用於客户端腳本語言,最早是在HTML網頁上使用,用来给HTML網頁增加動態功能。然而现在JavaScript也可被用于网络服务器,如Node.js

在1995年時,由網景公司的布兰登·艾克,在網景領航員瀏覽器上首次設計實作而成。因為網景公司與昇陽公司合作,網景公司管理階層希望它外觀看起來像Java,因此取名為JavaScript。但實際上它的語法風格與SelfScheme較為接近。

為了取得技術優勢,微軟推出了JScript,CEnvi推出ScriptEase,與JavaSript同樣可在瀏覽器上運行。為了統一規格,1997年,在ECMA(欧洲计算机制造商协会)的协调下,由Netscape、Sun、微软、Borland组成的工作组确定统一标准:ECMA-262。因為JavaScript相容於ECMA標準,因此也稱為ECMAScript[1]

目录

概論

一般来说,完整的JavaScript包括以下几个部分:

  • ECMAScript,描述了该语言的语法和基本对象
  • 文档对象模型(DOM),描述处理网页内容的方法和接口
  • 浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口

它的基本特点如下:

  • 是一种解释性脚本语言(代码不进行预编译)。
  • 主要用来向 HTML 页面添加交互行为
  • 可以直接嵌入 HTML 页面,但写成单独的js文件有利于结构和行为的分离。

JavaScript常用来完成以下任务:

  • 嵌入动态文本于HTML页面
  • 对浏览器事件作出响应
  • 读写HTML元素
  • 在数据被提交到服务器之前验证数据
  • 检测访客的浏览器信息
  • 控制cookies,包括创建和修改等

历史

它最初由网景公司布兰登·艾克设计。JavaScript是甲骨文公司的注册商标。[2] Ecma国际以JavaScript为基础制定了ECMAScript标准。JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:ECMAScript文档对象模型浏览器对象模型

Netscape在最初將其腳本語言命名為LiveScript,後來Netscape在與Sun合作之後將其改名為JavaScript。JavaScript最初受Java启发而开始设计的,目的之一就是“看上去像Java”[3],因此语法上有类似之处,一些名称和命名规范也借自Java。但JavaScript的主要设计原则源自SelfScheme[4]。JavaScript与Java名称上的近似,是当时网景为了营销考虑与太陽電腦达成协议的结果。為了取得技術優勢,微軟推出了JScript來迎戰JavaScript的腳本語言。为了互用性,Ecma国际(前身为欧洲计算机制造商协会)建立了ECMA-262标准(ECMAScript)。现在两者都属于ECMAScript的实现。儘管JavaScript作為給非程式人員的腳本語言,而非作為給程式人員的程式語言來推廣和宣傳,但是JavaScript具有非常豐富的特性。

发展初期,JavaScript的标准并未确定,同期有网景的JavaScript,微软的JScript和CEnvi的ScriptEase三足鼎立。1997年,在ECMA(欧洲计算机制造商协会)的协调下,由Netscape、Sun、微软、Borland组成的工作组确定统一标准:ECMA-262。

常用函式庫

Template:See

特性

不同於伺服器端腳本語言,例如PHPASP,JavaScript主要被作为客户端腳本語言在用戶的瀏覽器上運行,不需要伺服器的支持。所以在早期程序員比較青睞於JavaScript以減少對伺服器的負擔,而與此同時也帶來另一個問題:安全性。而隨著伺服器的強壯,雖然現在的程序員更喜歡運行於伺服端的腳本以保證安全,但JavaScript仍然以其跨平台、容易上手等優勢大行其道。同时,有些特殊功能(如AJAX)必须依赖Javascript在客户端进行支持。隨著引擎如V8和框架如Node.js的發展,及其事件驅動異步IO等特性,JavaScript逐漸被用來編寫伺服器端程式。

编程

JavaScript是一種腳本語言,其原始碼在發往客户端執行之前不需經過編譯,而是將文本格式的字符代碼發送給瀏覽器由瀏覽器解釋執行。直譯語言的弱點是安全性較差,而且在JavaScript中,如果一條執行不了,那麼下面的語言也無法執行。而其解決辦法就是於使用try{}catch(){}︰ <source lang="javascript"> console.log("a"); //-{zh-cn:这是正确的;zh-tw:這是正確的;}- console.log("b"); //-{zh-cn:这是正确的;zh-tw:這是正確的;}- console.logg("c"); //-{zh-cn:这是错误的,并且到这里会停下来;zh-tw:這不是正確的,並會到這裡時停下來;}- console.log("d"); //-{zh-cn:这是正确的;zh-tw:這是正確的;}- console.log("e"); //-{zh-cn:这是正确的;zh-tw:這是正確的;}-

/*-{zh-cn:解决办法;zh-tw:解決辦法;}-*/ try{console.log("a");}catch(e){} //-{zh-cn:这是正确的;zh-tw:這是正確的;}- try{console.log("b");}catch(e){} //-{zh-cn:这是正确的;zh-tw:這是正確的;}- try{console.logg("c");}catch(e){} //-{zh-cn:这是错误的,但是到这里不会停下来,而是跳过;zh-tw:這不是正確的,但不會停下來,而是跳過;}- try{console.log("d");}catch(e){} //-{zh-cn:这是正确的;zh-tw:這是正確的;}- try{console.log("e");}catch(e){} //-{zh-cn:这是正确的;zh-tw:這是正確的;}- </source>

Javascript被歸類為直譯語言,因為目前主流的引擎都是每次執行時載入程式碼並解譯。V8是將所有程式碼解譯後再開始執行,其他引擎則是逐行解譯(SpiderMonkey會將解譯過的指令暫存,以提高效能,稱為即時編譯),但由於V8的核心部份多數用Javascript撰寫(而SpiderMonkey是用C++),因此在不同的測試上,兩者效能互有優劣。

與其相對應的是編譯語言,例如C语言,以編譯語言編寫的程式在執行之前,必須經過編譯,將程式碼編譯為機器碼,再加以執行。

Hello World

以下是一個簡單的JavaScript Hello World︰ <source lang="javascript"> <!DOCTYPE HTML> <html>

   <head>
   <title>簡單的JavaScript Hello World</title>
       <script type="text/javascript">
           document.write("Hello, world!");   // -{zh-cn:在浏览器视窗内直接显示;zh-tw:於瀏覽器視窗內直接顯示;}-
           alert("Hello, world!");            // -{zh-cn:弹窗显示;zh-tw:開啟對話視窗顯示;}-
           console.log("Hello, world!");      // -{zh-cn:在控制台(console)里显示,需要先开启开发工具控制台;zh-tw:於console裡顯示。IE下需要先开启开发工具控制台;}-
       </script>
   </head>
   <body>

-{zh-cn:HTML 内容……;zh-tw:HTML 內文……;}-

   </body>

</html> </source>

或是在瀏覽器的網址列(location bar)中使用javascript:,以互動方式表示: <source lang="javascript"> javascript:alert("Hello world!"); </source>

版本

JavaScript 已經被 Netscape 公司提交給 ECMA 制定為標準,稱之為 ECMAScript,標準編號 ECMA-262。目前最新版為 ECMA-262 5th Edition[5]。符合 ECMA-262 3rd Edition 標準的實現有:

目前 ECMA-262 4th Edition 正在開發的過程中,與其對應的 JavaScript 的版本為 JavaScript 2.0,目前也正在開發過程中。

版本 發佈日期 基於 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 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 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

[6]

比較

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實現。

參見

Template:Wikibooks

參考文獻

Template:Reflist

外部連結

Template:程序设计语言 Template:網頁技術與標準 Template:ECMAScript




Category:bbbbb

词条统计

  • 创建者:()
  • 浏览次数:717次
  • 编辑次数:3次 历史版本
  • 最近更新:2013-10-22

热门词条榜

贡献排行榜

  • 1 赵兴林(创建词条数量:13)
  • 2 任柏涛(创建词条数量:3)
  • 3 米襄浏(创建词条数量:1)
  • 4 闫卫杰(创建词条数量:1)
  • 5 崔松松(创建词条数量:1)
  • 6 王海泉(创建词条数量:1)
  • 7 刘瑞明(创建词条数量:1)
  • 8 石光明(创建词条数量:1)
  • 9 李海峰(创建词条数量:1)