JavaScript

JavaScript

計算機編程語言
JavaScript(簡稱“JS”) 是一種具有函數優先的輕量級,解釋型或即時編譯型的編程語言。雖然它是作為開發Web頁面的腳本語言而出名,但是它也被用到了很多非浏覽器環境中,JavaScript 基于原型編程、多範式的動态腳本語言,并且支持面向對象、命令式、聲明式、函數式編程範式。JavaScript的标準是ECMAScript 。截至 2012 年,所有浏覽器都完整的支持ECMAScript 5.1,舊版本的浏覽器至少支持ECMAScript 3 标準。2015年6月17日,ECMA國際組織發布了ECMAScript的第六版,該版本正式名稱為 ECMAScript 2015,但通常被稱為ECMAScript 6 或者ES2015。[1]
    軟件名稱:JavaScript 軟件平台:Chrome、IE、Safari、Opera、Firefox、Edge等 軟件語言:JavaScript 開發商:Netscape、Mozilla基金會 軟件授權:MIT License 軟件版本:ECMAScript 2021 軟件大小:

産生背景

JavaScript最初由Netscape的Brendan Eich設計,最初将其腳本語言命名為LiveScript,後來Netscape在與Sun合作之後将其改名為JavaScript。JavaScript最初受Java啟發而開始設計的,目的之一就是“看上去像Java”,因此語法上有類似之處,一些名稱和命名規範也借自Java,但JavaScript的主要設計原則源自Self和Scheme。JavaScript與Java名稱上的近似,是當時Netscape為了營銷考慮與Sun微系統達成協議的結果。微軟同時期也推出了JScript來迎戰JavaScript的腳本語言。

發展初期,JavaScript的标準并未确定,同期有Netscape的JavaScript,微軟的JScript和CEnvi的ScriptEase三足鼎立。為了互用性,Ecma國際(前身為歐洲計算機制造商協會)創建了ECMA-262标準(ECMAScript),兩者都屬于ECMAScript的實現,盡管JavaScript作為給非程序人員的腳本語言,而非作為給程序人員的腳本語言來推廣和宣傳,但是JavaScript具有非常豐富的特性。1997年,在ECMA(歐洲計算機制造商協會)的協調下,由Netscape、Sun、微軟、Borland組成的工作組确定統一标準:ECMA-262。完整的JavaScript實現包含三個部分:ECMAScript,文檔對象模型,浏覽器對象模型。

JavaScript是甲骨文公司的注冊商标。Ecma國際以JavaScript為基礎制定了ECMAScript标準。JavaScript也可以用于其他場合,如服務器端編程(Node.js)。

主要功能

1.嵌入動态文本于HTML頁面。

2.對浏覽器事件做出響應。

3.讀寫HTML元素。

4.在數據被提交到服務器之前驗證數據。

5.檢測訪客的浏覽器信息。控制cookies,包括創建和修改等。

6.基于Node.js技術進行服務器端編程。

語言組成

ECMAScript,描述了該語言的語法和基本對象。

文檔對象模型(DOM),描述處理網頁内容的方法和接口。

浏覽器對象模型(BOM),描述與浏覽器進行交互的方法和接口。

運行模式

JavaScript是一種屬于網絡的高級腳本語言,已經被廣泛用于Web應用開發,常用來為網頁添加各式各樣的動态功能,為用戶提供更流暢美觀的浏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。

是一種解釋性腳本語言(代碼不進行預編譯)。

主要用來向HTML(标準通用标記語言下的一個應用)頁面添加交互行為。

可以直接嵌入HTML頁面,但寫成單獨的js文件有利于結構和行為的分離。

跨平台特性,在絕大多數浏覽器的支持下,可以在多種平台下運行(如Windows、Linux、Mac、Android、iOS等)。

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()中會傳入錯誤信息。

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。最新版為ECMAScript 6。符合ECMA-262 3rd Edition标準的實現有:

Microsoft公司的JScript.

Mozilla的JavaScript-C(C語言實現),現名SpiderMonkey

Mozilla的Rhino(Java實現)

Digital Mars公司的DMDScript

Google公司的V8

WebKit

版本記錄

版本

發布日期

基于

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 [11] 

2010年7月27日

1.8.1 + ECMAScript 5 Compliance

4

9

11.60

ES2015

2015年

ECMAScript 2015

JavaScript版本

版本

說明

實現

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。

ECMAScript版本

相關詞條

相關搜索

其它詞條