JavaScript

JavaScript

JavaScript(簡稱“JS”)是一種具有函式優先的輕量級,解釋型或即時編譯型的程式語言。雖然它是作為開發Web頁面的腳本語言而出名,但是它也被用到了很多非瀏覽器環境中,JavaScript基於原型編程、多範式的動態腳本語言,並且支持面向對象、命令式、聲明式、函式式編程範式。

JavaScript在1995年由Netscape公司的Brendan Eich,在網景導航者瀏覽器上首次設計實現而成。因為Netscape與Sun合作,Netscape管理層希望它外觀看起來像Java,因此取名為JavaScript。但實際上它的語法風格與Self及Scheme較為接近。

JavaScript的標準是ECMAScript。截至2012年,所有瀏覽器都完整的支持ECMAScript 5.1,舊版本的瀏覽器至少支持ECMAScript 3標準。2015年6月17日,ECMA國際組織發布了ECMAScript的第六版,該版本正式名稱為ECMAScript 2015,但通常被稱為ECMAScript 6或者ES2015。

基本介紹

  • 軟體名稱:JavaScript
  • 軟體平台ChromeIESafariOperaFirefoxEdge
  • 上線時間:1995年 
  • 最近更新時間:2023年6月
  • 軟體語言:JavaScript
  • 開發商:Netscape、Mozilla基金會
  • 軟體授權:MIT License
  • 軟體版本:ECMAScript 2023
產生背景,主要功能,語言組成,運行模式,語言特點,編譯模式,語言標準,版本記錄,

產生背景

JavaScript最初由NetscapeBrendan Eich設計,最初將其腳本語言命名為LiveScript,後來Netscape在與Sun合作之後將其改名為JavaScript。JavaScript最初受Java啟發而開始設計的,目的之一就是“看上去像Java”,因此語法上有類似之處,一些名稱和命名規範也借自Java,但JavaScript的主要設計原則源自Self和Scheme。JavaScript與Java名稱上的近似,是當時Netscape為了行銷考慮與Sun微系統達成協定的結果。微軟同時期也推出了JScript來迎戰JavaScript的腳本語言。
JavaScript
javascript組成
發展初期,JavaScript的標準並未確定,同期有Netscape的JavaScript,微軟的JScript和CEnvi的ScriptEase三足鼎立。為了互用性,Ecma國際(前身為歐洲計算機製造商協會)創建了ECMA-262標準(ECMAScript),兩者都屬於ECMAScript的實現,儘管JavaScript作為給非程式人員的腳本語言,而非作為給程式人員的腳本語言來推廣和宣傳,但是JavaScript具有非常豐富的特性。1997年,在ECMA(歐洲計算機製造商協會)的協調下,由NetscapeSun微軟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中來實現自身的功能的。
  1. 是一種解釋性腳本語言(代碼不進行預編譯)。
  2. 主要用來向HTML標準通用標記語言下的一個套用)頁面添加互動行為。
  3. 可以直接嵌入HTML頁面,但寫成單獨的js檔案有利於結構和行為的分離
  4. 跨平台特性,在絕大多數瀏覽器的支持下,可以在多種平台下運行(如WindowsLinuxMacAndroidiOS等)。
  5. JavaScript腳本語言同其他語言一樣,有它自身的基本數據類型,表達式和算術運算符及程式的基本程式框架。JavaScript提供了四種基本的數據類型和兩種特殊數據類型用來處理數據和文字。而變數提供存放信息的地方,表達式則可以完成較複雜的信息處理。

語言特點

JavaScript腳本語言具有以下特點:
(1)腳本語言。JavaScript是一種解釋型的腳本語言,CC++等語言先編譯後執行,而JavaScript是在程式的運行過程中逐行進行解釋。
(2)基於對象。JavaScript是一種基於對象的腳本語言,它不僅可以創建對象,也能使用現有的對象。
(3)簡單。JavaScript語言中採用的是弱類型的變數類型,對使用的數據類型未做出嚴格的要求,是基於Java基本語句和控制的腳本語言,其設計簡單緊湊。
(4)動態性。JavaScript是一種採用事件驅動的腳本語言,它不需要經過Web伺服器就可以對用戶的輸入做出回響。在訪問一個網頁時,滑鼠在網頁中進行滑鼠點擊或上下移、視窗移動等操作JavaScript都可直接對這些事件給出相應的回響。
(5)跨平台性。JavaScript腳本語言不依賴於作業系統,僅需要瀏覽器的支持。因此一個JavaScript腳本在編寫後可以帶到任意機器上使用,前提是機器上的瀏覽器支持JavaScript腳本語言,JavaScript已被大多數的瀏覽器所支持。不同於伺服器端腳本語言,例如PHPASP,JavaScript主要被作為客戶端腳本語言在用戶的瀏覽器上運行,不需要伺服器的支持。所以在早期程式設計師比較傾向於使用JavaScript以減少對伺服器的負擔,而與此同時也帶來另一個問題,安全性。
而隨著伺服器的強壯,雖然程式設計師更喜歡運行於服務端的腳本以保證安全,但JavaScript仍然以其跨平台、容易上手等優勢大行其道。同時,有些特殊功能(如AJAX)必須依賴JavaScript在客戶端進行支持。

編譯模式

JavaScript是一種腳本語言,其原始碼在發往客戶端運行之前不需經過編譯,而是將文本格式的字元代碼傳送給瀏覽器由瀏覽器解釋運行。直譯語言的弱點是安全性較差,而且在JavaScript中,如果一條運行不了,那么下面的語言也無法運行。而其解決辦法就是於使用try{}catch(){},其中,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){}//這是正確的
 
JavaScript被歸類為直譯語言,因為主流的引擎都是每次運行時載入代碼並解譯。V8是將所有代碼解譯後再開始運行,其他引擎則是逐行解譯(SpiderMonkey會將解譯過的指令暫存,以提高性能,稱為實時編譯),但由於V8的核心部分多數用JavaScript撰寫(而SpiderMonkey是用C++),因此在不同的測試上,兩者性能互有優劣。與其相對應的是編譯語言,例如C語言,以編譯語言編寫的程式在運行之前,必須經過編譯,將代碼編譯為機器碼,再加以運行。
注釋://被稱作行注釋,/* */中的內容會被注釋。

語言標準

JavaScript已經被Netscape公司提交給ECMA制定為標準,稱之為ECMAScript標準編號ECMA-262。最新版為ECMAScript 6。符合ECMA-262 3rd Edition標準的實現有:
  1. Mozilla的JavaScript-C(C語言實現),現名SpiderMonkey
  2. Mozilla的Rhino(Java實現)
  3. Digital Mars公司的DMDScript
  4. Google公司的V8

版本記錄

JavaScript版本
版本
發布日期
基於
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
-
-
ES2015
2015年
ECMAScript 2015
-
-
-
-
-
-
ECMAScript版本
版本
說明
實現
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。
-

相關詞條

熱門詞條

聯絡我們