Javascript詳細(xì)解析 (一) —— 基本概覽

版本記錄

版本號 時間
V1.0 2018.01.25

前言

最近一直在學(xué)習(xí)RN蹬屹,所以要用到javascript驾锰,2015年版本的javascript已經(jīng)更新到ES6了卸留,下面我們就一起學(xué)習(xí)這門語言和相關(guān)知識,共同進步椭豫。

javascript簡介

以下部分內(nèi)容來自百度耻瑟。

JavaScript一種直譯式腳本語言旨指,是一種動態(tài)類型、弱類型喳整、基于原型的語言谆构,內(nèi)置支持類型。它的解釋器被稱為JavaScript引擎框都,為瀏覽器的一部分搬素,廣泛用于客戶端的腳本語言,最早是在HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)網(wǎng)頁上使用魏保,用來給HTML網(wǎng)頁增加動態(tài)功能熬尺。

在1995年時,由Netscape公司的Brendan Eich囱淋,在網(wǎng)景導(dǎo)航者瀏覽器上首次設(shè)計實現(xiàn)而成猪杭。因為NetscapeSun合作,Netscape管理層希望它外觀看起來像Java妥衣,因此取名為JavaScript皂吮。但實際上它的語法風(fēng)格與SelfScheme較為接近。

為了取得技術(shù)優(yōu)勢税手,微軟推出了JScript蜂筹,CEnvi推出ScriptEase,與JavaScript同樣可在瀏覽器上運行芦倒。為了統(tǒng)一規(guī)格艺挪,因為JavaScript兼容于ECMA標(biāo)準(zhǔn),因此也稱為ECMAScript兵扬。


組成部分

  • ECMAScript麻裳,描述了該語言的語法和基本對象
  • 文檔對象模型(DOM),描述處理網(wǎng)頁內(nèi)容的方法和接口器钟。
  • 瀏覽器對象模型(BOM)津坑,描述與瀏覽器進行交互的方法接口

具體結(jié)構(gòu)如下圖所示傲霸。


基本特點

JavaScript是一種屬于網(wǎng)絡(luò)的腳本語言,已經(jīng)被廣泛用于Web應(yīng)用開發(fā),常用來為網(wǎng)頁添加各式各樣的動態(tài)功能,為用戶提供更流暢美觀的瀏覽效果疆瑰。通常JavaScript腳本是通過嵌入在HTML中來實現(xiàn)自身的功能的。

  • 是一種解釋性腳本語言(代碼不進行預(yù)編譯)昙啄。
  • 主要用來向HTML標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)頁面添加交互行為穆役。
  • 可以直接嵌入HTML頁面,但寫成單獨的js文件有利于結(jié)構(gòu)和行為的分離梳凛。
  • 跨平臺特性耿币,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺下運行(如Windows韧拒、Linux掰读、Mac秘狞、Android叭莫、iOS等)蹈集。

Javascript腳本語言同其他語言一樣,有它自身的基本數(shù)據(jù)類型雇初,表達式和算術(shù)運算符及程序的基本程序框架拢肆。Javascript提供了四種基本的數(shù)據(jù)類型和兩種特殊數(shù)據(jù)類型用來處理數(shù)據(jù)和文字。而變量提供存放信息的地方靖诗,表達式則可以完成較復(fù)雜的信息處理郭怪。


日常用途

  • 嵌入動態(tài)文本于HTML頁面。
  • 對瀏覽器事件做出響應(yīng)刊橘。
  • 讀寫HTML元素鄙才。
  • 在數(shù)據(jù)被提交到服務(wù)器之前驗證數(shù)據(jù)。
  • 檢測訪客的瀏覽器信息促绵。
  • 控制cookies攒庵,包括創(chuàng)建和修改等。
  • 基于Node.js技術(shù)進行服務(wù)器端編程败晴。

歷史

它最初由NetscapeBrendan Eich設(shè)計浓冒。JavaScript是甲骨文公司的注冊商標(biāo)。Ecma國際以JavaScript為基礎(chǔ)制定了ECMAScript標(biāo)準(zhǔn)尖坤。JavaScript也可以用于其他場合稳懒,如服務(wù)器端編程。完整的JavaScript實現(xiàn)包含三個部分:ECMAScript慢味,文檔對象模型场梆,瀏覽器對象模型。

Netscape在最初將其腳本語言命名為LiveScript纯路,后來Netscape在與Sun合作之后將其改名為JavaScript或油。JavaScript最初受Java啟發(fā)而開始設(shè)計的,目的之一就是“看上去像Java”感昼,因此語法上有類似之處装哆,一些名稱和命名規(guī)范也借自Java。但JavaScript的主要設(shè)計原則源自SelfScheme定嗓。JavaScript與Java名稱上的近似蜕琴,是當(dāng)時Netscape為了營銷考慮與Sun微系統(tǒng)達成協(xié)議的結(jié)果。為了取得技術(shù)優(yōu)勢宵溅,微軟推出了JScript來迎戰(zhàn)JavaScript的腳本語言凌简。為了互用性,Ecma國際(前身為歐洲計算機制造商協(xié)會)創(chuàng)建了ECMA-262標(biāo)準(zhǔn)(ECMAScript)恃逻。兩者都屬于ECMAScript的實現(xiàn)雏搂。盡管JavaScript作為給非程序人員的腳本語言藕施,而非作為給程序人員的腳本語言來推廣和宣傳,但是JavaScript具有非常豐富的特性凸郑。

發(fā)展初期裳食,JavaScript的標(biāo)準(zhǔn)并未確定,同期有Netscape的JavaScript芙沥,微軟的JScript和CEnvi的ScriptEase三足鼎立诲祸。1997年,在ECMA(歐洲計算機制造商協(xié)會)的協(xié)調(diào)下而昨,由Netscape救氯、Sun、微軟歌憨、Borland組成的工作組確定統(tǒng)一標(biāo)準(zhǔn):ECMA-262着憨。


特性

JavaScript腳本語言具有以下特點:

  • 腳本語言。JavaScript是一種解釋型的腳本語言,C务嫡、C++等語言先編譯后執(zhí)行,而JavaScript是在程序的運行過程中逐行進行解釋甲抖。
  • 基于對象。JavaScript是一種基于對象的腳本語言,它不僅可以創(chuàng)建對象,也能使用現(xiàn)有的對象植袍。
  • 簡單惧眠。JavaScript語言中采用的是弱類型的變量類型,對使用的數(shù)據(jù)類型未做出嚴(yán)格的要求,是基于Java基本語句和控制的腳本語言,其設(shè)計簡單緊湊。
  • 動態(tài)性于个。JavaScript是一種采用事件驅(qū)動的腳本語言,它不需要經(jīng)過Web服務(wù)器就可以對用戶的輸入做出響應(yīng)氛魁。在訪問一個網(wǎng)頁時,鼠標(biāo)在網(wǎng)頁中進行鼠標(biāo)點擊或上下移、窗口移動等操作JavaScript都可直接對這些事件給出相應(yīng)的響應(yīng)厅篓。
  • 跨平臺性秀存。JavaScript腳本語言不依賴于操作系統(tǒng),僅需要瀏覽器的支持。因此一個JavaScript腳本在編寫后可以帶到任意機器上使用,前提上機器上的瀏覽器支 持JavaScript腳本語言,目前JavaScript已被大多數(shù)的瀏覽器所支持羽氮。

不同于服務(wù)器端腳本語言或链,例如PHPASP,JavaScript主要被作為客戶端腳本語言在用戶的瀏覽器上運行档押,不需要服務(wù)器的支持澳盐。所以在早期程序員比較青睞于JavaScript以減少對服務(wù)器的負(fù)擔(dān),而與此同時也帶來另一個問題:安全性令宿。

而隨著服務(wù)器的強壯叼耙,雖然程序員更喜歡運行于服務(wù)端的腳本以保證安全,但JavaScript仍然以其跨平臺粒没、容易上手等優(yōu)勢大行其道筛婉。同時,有些特殊功能(如AJAX)必須依賴Javascript在客戶端進行支持癞松。隨著引擎如V8和框架如Node.js的發(fā)展爽撒,及其事件驅(qū)動及異步IO等特性入蛆,JavaScript逐漸被用來編寫服務(wù)器端程序。


編程

JavaScript是一種腳本語言硕勿,其源代碼在發(fā)往客戶端運行之前不需經(jīng)過編譯哨毁,而是將文本格式的字符代碼發(fā)送給瀏覽器由瀏覽器解釋運行。直譯語言的弱點是安全性較差首尼,而且在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){}//這是正確的

Javascript被歸類為直譯語言,因為主流的引擎都是每次運行時加載代碼并解譯抄沮。V8是將所有代碼解譯后再開始運行跋核,其他引擎則是逐行解譯(SpiderMonkey會將解譯過的指令暫存,以提高性能叛买,稱為實時編譯)砂代,但由于V8的核心部份多數(shù)用Javascript撰寫(而SpiderMonkey是用C++),因此在不同的測試上率挣,兩者性能互有優(yōu)劣刻伊。與其相對應(yīng)的是編譯語言,例如C語言椒功,以編譯語言編寫的程序在運行之前捶箱,必須經(jīng)過編譯,將代碼編譯為機器碼动漾,再加以運行丁屎。


版本

JavaScript已經(jīng)被Netscape公司提交給ECMA制定為標(biāo)準(zhǔn),稱之為ECMAScript旱眯,標(biāo)準(zhǔn)編號ECMA-262晨川。目前最新版為ECMA-262 5th Edition。符合ECMA-262 3rd Edition標(biāo)準(zhǔn)的實現(xiàn)有:

  • Microsoft公司的JScript
  • Mozilla的JavaScript-C(C語言實現(xiàn))删豺,現(xiàn)名SpiderMonkey
  • Mozilla的Rhino(Java實現(xiàn))
  • Digital Mars公司的DMDScript
  • Google公司的V8
  • WebKit

這個表格有點老共虑,需要補充下,2015年ES6/ECMAScript2015出現(xiàn)吼鳞。所以我們以后學(xué)習(xí)的就是學(xué)習(xí)ES6看蚜。

ES6(ECMAScript2015)的出現(xiàn),無疑給前端開發(fā)人員帶來了新的驚喜赔桌,它包含了一些很棒的新特性供炎,可以更加方便的實現(xiàn)很多復(fù)雜的操作渴逻,提高開發(fā)人員的效率。

也許你還不知道ES6是什么, 實際上, 它是一種新的javascript規(guī)范音诫。下面了解下當(dāng)今最流行的編程語言JavaScript最新一代的十大特性惨奕。

以下是ES6排名前十的最佳特性列表(排名不分先后):

  • Default Parameters(默認(rèn)參數(shù)) in ES6
  • Template Literals (模板文本)in ES6
  • Multi-line Strings (多行字符串)in ES6
  • Destructuring Assignment (解構(gòu)賦值)in ES6
  • Enhanced Object Literals (增強的對象文本)in ES6
  • Arrow Functions (箭頭函數(shù))in ES6
  • Promises in ES6
  • Block-Scoped Constructs Let and Const(塊作用域構(gòu)造Let and Const)
  • Classes(類) in ES6
  • Modules(模塊) in ES6

參考文章

1. 前端開發(fā)者不得不知的ES6十大特性
2. 百度百科

后記

本篇已結(jié)束,后面更精彩~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末竭钝,一起剝皮案震驚了整個濱河市梨撞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌香罐,老刑警劉巖卧波,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異庇茫,居然都是意外死亡港粱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門旦签,熙熙樓的掌柜王于貴愁眉苦臉地迎上來查坪,“玉大人,你說我怎么就攤上這事宁炫〕ナ铮” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵羔巢,是天一觀的道長望忆。 經(jīng)常有香客問我,道長朵纷,這世上最難降的妖魔是什么炭臭? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮袍辞,結(jié)果婚禮上鞋仍,老公的妹妹穿的比我還像新娘。我一直安慰自己搅吁,他們只是感情好威创,可當(dāng)我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著谎懦,像睡著了一般肚豺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上界拦,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天吸申,我揣著相機與錄音,去河邊找鬼。 笑死截碴,一個胖子當(dāng)著我的面吹牛梳侨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播日丹,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼走哺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哲虾?” 一聲冷哼從身側(cè)響起丙躏,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎束凑,沒想到半個月后晒旅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡湘今,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年敢朱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摩瞎。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖孝常,靈堂內(nèi)的尸體忽然破棺而出旗们,到底是詐尸還是另有隱情,我是刑警寧澤构灸,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布上渴,位于F島的核電站,受9級特大地震影響喜颁,放射性物質(zhì)發(fā)生泄漏稠氮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一半开、第九天 我趴在偏房一處隱蔽的房頂上張望隔披。 院中可真熱鬧,春花似錦寂拆、人聲如沸奢米。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鬓长。三九已至,卻和暖如春尝江,著一層夾襖步出監(jiān)牢的瞬間涉波,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留啤覆,地道東北人苍日。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像城侧,于是被迫代替她去往敵國和親易遣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容