網(wǎng)站留言板漏洞百度手機瀏覽器
JavaScript ( JS ) 是一種具有函數(shù)優(yōu)先的輕量級,解釋型或即時編譯型的編程語言。雖然它是作為開發(fā)Web 頁面的腳本語言而出名的,但是它也被用到了很多非瀏覽器環(huán)境中,例如 Node.js、 Apache CouchDB 和 Adobe Acrobat。JavaScript 是一種基于原型編程、多范式的動態(tài)腳本語言,并且支持面向?qū)ο蟆⒚钍胶吐暶魇?#xff08;如函數(shù)式編程)風(fēng)格。
JavaScript的組成部分
-
ECMAScript,描述了該語言的語法和基本對象。
-
文檔對象模型(DOM),描述處理網(wǎng)頁內(nèi)容的方法和接口。
-
瀏覽器對象模型(BOM),描述與瀏覽器進(jìn)行交互的方法和接口。
JavaScript發(fā)展歷史
(1)JavaScript被設(shè)計出來后最初命名為Mocha,1995年9月在Netscape Navigator 2.0的Beta版中改名 為LiveScript,同年12月,Netscape Navigator 2.0 Beta 3中部署時被重命名為JavaScript;
(2)1996年8月IE 3 發(fā)布,支持 jscript (微軟實現(xiàn)的 js)
(3)1996年11月,網(wǎng)景向ECMA提交語言標(biāo)準(zhǔn),由于版權(quán)問題,js 語言標(biāo)準(zhǔn)不叫 JavaScript,叫ECMAScript
(4)1997年6月,第一版ECMAScript發(fā)布
(5)1999年12月,第三版ECMAScript發(fā)布,這個版本使用最廣(第四版沒有發(fā)行成功)
(6)2006 年,jQuery 發(fā)布,它是目前最長壽的 js 庫
(7)2009年12月,第五版ECMAScript發(fā)布,增加了一些功能
(8)2009 年,Ryan 基于 V8 (Chrome 的 js 引擎叫做 V8)創(chuàng)建了 Node.js
(9)2010年,Isaac基于node.js寫出了npm
(10)2015年6月,第六版ECMAScript發(fā)布,新瀏覽器都支持這一版(之后每年發(fā)布一版,版本號以年份命 名)
JavaScript的興起:需要一門語言可以直接運行在瀏覽器中,完成表單驗證,減輕服務(wù)器的壓力
ECMAScript5:編程(數(shù)據(jù)結(jié)構(gòu)、邏輯控制、算法、內(nèi)存分配、高級應(yīng)用BOM-瀏覽器對象模型、DOM:應(yīng)用程序API-文檔對象模型)
早期主要運行在瀏覽器端,用于表單驗證以及動畫的實現(xiàn)。隨著js版本的升級,現(xiàn)在的js可以運行在nodejs上,而nodejs又可以安裝在絕大多數(shù)的操作系統(tǒng)中,所以js可以運行在絕大多數(shù)的系統(tǒng)中,除了完成表單驗證以及動畫的實現(xiàn)還可以進(jìn)行服務(wù)器端編程,甚至于硬件編程。
JavaScript 的標(biāo)準(zhǔn)是 ECMAScript 。截至 2012 年,所有的現(xiàn)代瀏覽器都完整的支持? ECMAScript 5.1,2015年6月17日,ECMA國際組織發(fā)布了 ECMAScript 的第六版,該版本正式名稱為 ECMAScript 2015,但通常被稱為 ECMAScript 6 或者 ES6。
需要注意的是,js不同于Java。Java是由sun公司開發(fā)并且維護,只能運行在jdk中。而js可以運行在絕大多數(shù)的瀏覽器中,主流瀏覽器就有IE、firefox、google chrome、safari...。那這樣js的版本是不是就會有很多呢?如果這樣,豈不是亂套了:程序員編寫的js代碼可以運行在firefox中,但是運行在IE中就會有問題。實際上,在早期確實有這樣的問題,后來大家覺得這樣搞下去會出問題,所以就坐在一起商量一套統(tǒng)一的語法,由于制定語法的這個組織叫ECMA,所以JavaScript的標(biāo)準(zhǔn)就是ECMAScript,這個ECMAScript中有哪些東西,實際上就是變量,表達(dá)式,關(guān)鍵字...的基礎(chǔ)語法。
JavaScript是一個編程語言,允許用戶在瀏覽器頁面上完成復(fù)雜的事情。瀏覽器頁面并不總是靜態(tài)的,往往顯示一些需要動態(tài)更新的內(nèi)容,交互式地圖,動畫,以及視頻等。一個完整的JavaScript包括核心(ECMAScript),應(yīng)用程序編程接口即API (比如DOM(Document Object Model),BOM(Browser Object Model)),以及其他第三方API。JavaScript與HTML、CSS一同配合共同完成一個復(fù)雜頁面的顯示。
通常所說的JavaScript是應(yīng)用在瀏覽器中,一般包括ECMAScript、DOM、BOM。ECMAScript為標(biāo)準(zhǔn),DOM為瀏覽器提供的js操作html/css的js API,BOM為瀏覽器提供的js操作瀏覽器的js API。而JavaScript如果應(yīng)用在nodejs中,則通常用于服務(wù)器端編程,可以進(jìn)行io操作,網(wǎng)絡(luò)操作等。
特點 客戶端代碼,在客戶機上執(zhí)行 1.JavaScript特殊的地方在于它也可以作為服務(wù)器端代碼執(zhí)行,但是需要搭建Node環(huán)境。node hello.js 2.在瀏覽器上運行 解釋性語言 被內(nèi)置于瀏覽器或者Nodejs平臺中的js解析器解析執(zhí)行,執(zhí)行前無需編譯 弱類型語言 從上往下順序解析執(zhí)行
系統(tǒng)環(huán)境
Linux 操作系統(tǒng)的環(huán)境*
Windows
MacOS
編輯器
vi、vim*
vscode/sublime
運行環(huán)境
舊:JavaScript不能獨立運行+網(wǎng)頁+console/fireBug
nodejs*
調(diào)試:
火狐:firebug
console.log()/彈框alert
2. js組成
1) ECMAScrpt 【js標(biāo)準(zhǔn)】(兼容性100%) (類似于CoreJava,制定了基礎(chǔ)的語法)
注釋 // 、/**/
變量
操作符
流程控制語句
數(shù)組
對象
函數(shù)
正則表達(dá)式
...
所有的js解釋器都可以兼容ECMAScript
2) DOM:Document Object Model文檔對象模型
js操作html的api
是針對XML但經(jīng)過擴展用于HTML的應(yīng)用程序編程接口。DOM將整個頁面映射成一個多節(jié)點結(jié)構(gòu)。
var dom=document.getElementsByTagName(“input”);
var dom=document.getElementById(“input_name”);
dom.οnclick=function(){}
js語言:基礎(chǔ)語法、基礎(chǔ)庫、擴展庫(jQuery DOM庫)
3) BOM:Browser Object Model 瀏覽器對象模型
js操作瀏覽器的api
開發(fā)人員可以使用BOM控制瀏覽器顯示的頁面以外的部分。彈出新瀏覽器窗口;移動,縮放,關(guān)閉瀏覽器的功能;提供瀏覽器詳細(xì)信息的navigator對象;提供瀏覽器所加載頁面的詳細(xì)信息的location對象;提供用戶顯示器分辨率詳細(xì)信息的screen對象;對cookies的支持;支持XMLHttpRequest,IE中的ActiveXObject自定義對象
alert()/prompt()/confirm()
setInterval(),setTimeout()
XMLHttpRequest
Ajax
這里需要注意的是,只有ECMAScript是標(biāo)準(zhǔn),也就是在絕大多數(shù)瀏覽器以及js解析器(node)中運行效果相同,但是DOM與BOM是各大瀏覽器廠商自己提供的API,在使用上大同小異,但是也可能會出現(xiàn)少許不兼容的情況
js解釋器:
1)瀏覽器廠商:Firefox(js標(biāo)準(zhǔn))、IE(js)、Google(js)
兼容性:
JavaScript的三個組成部分,在當(dāng)前五個主要瀏覽器(IE,Firefox,Chrom,Safari,Opera)中得到了不同程度支持,其中,所有瀏覽器對ECMAScript3支持大體都還不錯,對ECMAScript支持程度越來越高,但對DOM的支持彼此相差較多,對已經(jīng)正式納入HTML5標(biāo)準(zhǔn)的BOM來說,盡管各瀏覽器都實現(xiàn)了某些眾所周知的共同特性,但其他特性還因瀏覽器而異。
2)nodejs【網(wǎng)絡(luò)編程(http模塊)/數(shù)據(jù)庫操作(mysql)/IO文件(file)】
http://nodejs.cn可以安裝在linux windows macos unix等主流操作系統(tǒng)上
特征:可以運行在客戶端、服務(wù)器端,解釋性語言,弱類型語言,從上到下順序執(zhí)行。
在nodejs中,不存在兼容性問題,因為nodejs中壓根就沒有dom/bom,因此切記不要在nodejs中執(zhí)行任何dom和bom代碼,由于不存在兼容性問題,nodejs是可以大量發(fā)揮js高級標(biāo)準(zhǔn),ES6語法一般在nodejs中可以完全運行。
js特點
1) 解釋型語言
js -> nodejs(js解釋器)
2) 弱類型語言
變量的數(shù)據(jù)類型取決于值的數(shù)據(jù)類型
var a ;
a = 2; // a的數(shù)據(jù)類型為number
a = true; // a的數(shù)據(jù)類型為boolean
3) 順序解釋執(zhí)行 4) 既可以作為前端腳本語言,也可以作為后端語言,取決于應(yīng)用平臺(瀏覽器/操作系統(tǒng))和使用的框架(dom、jquery/http、mysql、file)