版本記錄
版本號 | 時間 |
---|---|
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)而成猪杭。因為Netscape與Sun合作,Netscape管理層希望它外觀看起來像Java妥衣,因此取名為JavaScript皂吮。但實際上它的語法風(fēng)格與Self及Scheme較為接近。
為了取得技術(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ù)器端編程败晴。
歷史
它最初由Netscape的Brendan 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è)計原則源自Self和Scheme定嗓。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ù)器端腳本語言或链,例如PHP與ASP,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é)束,后面更精彩~~~