ECMAScript5和ECMAScript6的新特性及瀏覽器支持情況

ECMAScript第六版已經(jīng)于2015年發(fā)布,某些瀏覽器已經(jīng)開始支持ES6了胆屿,這篇文章整理一下ES5以及ES6的新特性。

ECMAScript簡介

它是一種由Ecma國際(前身為歐洲計算機制造商協(xié)會)制定和發(fā)布的腳本語言規(guī)范,JavaScript在它的基礎上進行了自己的封裝习霹。但其實通常來說呜投,術語ECMAScriptJavaScript指的是同一個東西加匈。
JS包含三個部分:ECMAScript(核心)DOM(文檔對象模型)仑荐,BOM(瀏覽器對象模型)雕拼。ECMAScriptJS語言的基礎。
ECMAScript的最新版是第六版ECMAScript 6粘招,于2015年6月17日發(fā)布啥寇,截止發(fā)布日期,JavaScript的官方名稱是ECMAScript 2015洒扎,是當前最新的正式規(guī)范辑甜。

ECMAScript的各個版本:(從第三版開始說)
(1) 第三版ECMAScript3新增了對正則表達式、新控制語句逊笆、try-catch異常處理的支持栈戳,修改了字符處理、錯誤定義和數(shù)值輸出等內(nèi)容难裆。標志著ECMAScript成為了一門真正的編程語言子檀。
(2) 第四版于2008年7月發(fā)布前被廢棄。
(3) 第五版ECMAScript5力求澄清第3版中的歧義乃戈,并添加了新的功能褂痰。新功能包括:原生JSON對象、繼承的方法症虑、高級屬性的定義以及引入嚴格模式缩歪。
(4) 第六版ECMAScript6是繼ES5之后的一次主要改進,增添了許多必要的特性谍憔,例如:模塊和類以及一些實用特性匪蝙,Maps、Sets习贫、Promises逛球、生成器(Generators)等。

ECMAScript5的新特性

參考鏈接:http://www.tuicool.com/articles/vMv6b2z
并不是所有瀏覽器都完全支持ES5的新特性苫昌,比如低版本的IE颤绕,但是其他的主流瀏覽器都支持了,其中IE9不支持ES的嚴格模式,從IE10開始支持奥务。Safari 5.1不支持Function.prototype.bind物独。這也就是說,在移動端可以比較放心地使用ES5氯葬。
(1)嚴格模式
Strict Mode, 即所謂的嚴格模式挡篓。嚴格模式的意義是為了提供一種更佳良好錯誤檢查機制,讓你規(guī)避掉一些語言本身的bad point溢谤。
開啟嚴格模式的方法很簡單瞻凤,只需要在文件的頂部寫上字符串 use strict即可。當然這需要執(zhí)行環(huán)境支持嚴格模式世杀。另外由于use strict其實是一個字符串常量。那么即使遇到不支持嚴格模式的環(huán)境肝集,這行字符串只會被安全的忽略瞻坝,不會帶來任何的問題。
比如在嚴格模式下杏瞻,我們不可以使用一個未經(jīng)聲明的變量所刀。以前沒有用var聲明的變量,會自動成為全局變量捞挥,而在嚴格模式下浮创,會報錯。
還有另一些會出現(xiàn)問題的地方砌函,附鏈接:
http://www.jb51.net/article/78974.htm
(2)JSON對象
JSON.parse(jsonstr); //可以將json字符串轉(zhuǎn)換成json對象
JSON.stringify(jsonobj); //可以將json對象轉(zhuǎn)換成json對符串
(3)新增 Object接口

對象 構造器 說明
Object getPrototypeOf 返回對象的原型
Object getOwnPropertyDescriptor 返回對象自有屬性的屬性描述符
Object getOwnPropertyNames 返回一個數(shù)組斩披,包括對象所有自有屬性名稱集合(包括不可枚舉的屬性)
Object create 創(chuàng)建一個擁有置頂原型和若干個指定屬性的對象
Object defineProperty 給對象定義一個新屬性,或者修改已有的屬性讹俊,并返回
Object defineProperties 在一個對象上添加或修改一個或者多個自有屬性垦沉,并返回該對象
Object seal 鎖定對象。阻止修改現(xiàn)有屬性的特性仍劈,并阻止添加新屬性厕倍。但是可以修改已有屬性的值。
Object freeze 凍結對象贩疙,阻止對對象的一切操作讹弯。凍結對象將永遠不可變。
Object preventExtensions 讓一個對象變的不可擴展这溅,也就是永遠不能再添加新的屬性组民。
Object isSealed 判斷對象是否被鎖定
Object isFrozen 判斷對象是否被凍結
Object isExtensible 判斷對象是否可以被擴展
Object keys 返回一個由給定對象的所有可枚舉自身屬性的屬性名組成的數(shù)組

比較常用的有:

  • Object.create
  • Object.defineProperties
  • Object.keys

(4)新增Array接口

對象 構造器 說明
Array.prototype indexOf 返回根據(jù)給定元素找到的第一個索引值,否則返回-1
Array.prototype lastIndexOf 方法返回指定元素在數(shù)組中的最后一個的索引芍躏,如果不存在則返回 -1
Array.prototype every 測試數(shù)組的所有元素是否都通過了指定函數(shù)的測試
Array.prototype some 測試數(shù)組中的某些元素是否通過了指定函數(shù)的測試
Array.prototype forEach 讓數(shù)組的每一項都執(zhí)行一次給定的函數(shù)
Array.prototype map 返回一個由原數(shù)組中的每個元素調(diào)用一個指定方法后的返回值組成的新數(shù)組
Array.prototype filter 利用所有通過指定函數(shù)測試的元素創(chuàng)建一個新的數(shù)組邪乍,并返回
Array.prototype reduce 接收一個函數(shù)作為累加器,數(shù)組中的每個值(從左到右)開始縮減,最終為一個值
Array.prototype reduceRight 接受一個函數(shù)作為累加器庇楞,讓每個值(從右到左榜配,亦即從尾到頭)縮減為一個值

這些都是比較常用的,另外吕晌,還有一個 Array.isArray()蛋褥,用來判斷某一對象是否為數(shù)組。(typeof判斷的話睛驳,返回object烙心,用instanceof判斷的話,IE上的返回值不正確)
(5)Function.prototype.bind
bind()方法會創(chuàng)建一個新函數(shù),稱為綁定函數(shù).當調(diào)用這個綁定函數(shù)時,綁定函數(shù)會以創(chuàng)建它時傳入bind()方法的第一個參數(shù)作為 this,傳入 bind() 方法的第二個以及以后的參數(shù)加上綁定函數(shù)運行時本身的參數(shù)按照順序作為原函數(shù)的參數(shù)來調(diào)用原函數(shù)乏沸。
這個方法可以改變this的指向淫茵,為函數(shù)自定義 this指針。
Javascript中重新綁定 this變量的語法糖還有 call和 apply 蹬跃。不過 bind顯然與它們有著明顯的不同匙瘪。 bind將會返回一個新的函數(shù),而 call或者 apply并不會返回一個新的函數(shù)蝶缀,它們將會使用新的 this指針直接進行函數(shù)調(diào)用丹喻。

ES5的瀏覽器支持情況

http://kangax.github.io/compat-table/es5/
http://www.xuebuyuan.com/2122607.html
從這上面看來,IE8只支持defineProperty翁都、getOwnPropertyDescriptor的部分特性和JSon的新特性碍论,IE9支持除了嚴格模式以外的新特性,IE10和其他主流瀏覽器都支持了柄慰。
因此在PC端開發(fā)的時候鳍悠,要注意IE9以下的兼容,移動端開發(fā)時先煎,可以比較放心了贼涩。

ES6的新特性

(1)箭頭操作符=>
(2)類的支持--class關鍵字
(3)增強的對象字面量
(4)字符串模板
(5)解構
(6)參數(shù)默認值,不定參數(shù)薯蝎,拓展參數(shù)
(7)let與const 關鍵字
(8)for of 值遍歷
(9)iterator, generator
(10)模塊
(11)Proxies
(12)Symbols
(13)Math遥倦,Number,String占锯,Object 的新API
(14)Promises
新特性太多袒哥,就不一一詳細地寫了,具體請看參考文章鏈接:
http://www.cnblogs.com/Wayou/p/es6_new_features.html

ES6的瀏覽器支持情況

鏈接:
http://www.xuebuyuan.com/2122607.html
http://kangax.github.io/compat-table/es6/
可以看出來消略,基本上是沒有瀏覽器完全支持的堡称,所以還是不要直接用的好。
但是有轉(zhuǎn)換器 (更準確地說是源代碼到源代碼的編譯器) 可以把ES6轉(zhuǎn)換為被瀏覽器接受的ES5艺演,比如Babel以及Traceur 之類的項目却紧。其中Babel對 ES6 的支持程度比其它同類更高桐臊,而且 Babel 擁有完善的文檔和一個很棒的在線交互式編程環(huán)境,因此用的比較多晓殊。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末断凶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子巫俺,更是在濱河造成了極大的恐慌认烁,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件介汹,死亡現(xiàn)場離奇詭異却嗡,居然都是意外死亡,警方通過查閱死者的電腦和手機嘹承,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門窗价,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赶撰,你說我怎么就攤上這事舌镶。” “怎么了豪娜?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長哟楷。 經(jīng)常有香客問我瘤载,道長,這世上最難降的妖魔是什么卖擅? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任鸣奔,我火速辦了婚禮,結果婚禮上惩阶,老公的妹妹穿的比我還像新娘挎狸。我一直安慰自己,他們只是感情好断楷,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布锨匆。 她就那樣靜靜地躺著,像睡著了一般冬筒。 火紅的嫁衣襯著肌膚如雪恐锣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天舞痰,我揣著相機與錄音土榴,去河邊找鬼。 笑死响牛,一個胖子當著我的面吹牛玷禽,可吹牛的內(nèi)容都是我干的赫段。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼矢赁,長吁一口氣:“原來是場噩夢啊……” “哼糯笙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起坯台,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤炬丸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜒蕾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稠炬,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年咪啡,在試婚紗的時候發(fā)現(xiàn)自己被綠了首启。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡撤摸,死狀恐怖毅桃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情准夷,我是刑警寧澤钥飞,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站衫嵌,受9級特大地震影響读宙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜楔绞,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一结闸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酒朵,春花似錦桦锄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至针肥,卻和暖如春饼记,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背慰枕。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工具则, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人具帮。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓博肋,卻偏偏與公主長得像低斋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子匪凡,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

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

  • 一膊畴、ES6簡介 ? 歷時將近6年的時間來制定的新 ECMAScript 標準 ECMAScript 6(亦稱 ...
    一歲一枯榮_閱讀 6,082評論 8 25
  • 請參看我github中的wiki,不定期更新病游。https://github.com/ivonzhang/Front...
    zhangivon閱讀 7,133評論 2 19
  • ES6(ECMAScript2015)的出現(xiàn)唇跨,無疑給前端開發(fā)人員帶來了新的驚喜,它包含了一些很棒的新特性衬衬,可以更加...
    cbw100閱讀 15,441評論 3 233
  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    程序員poetry閱讀 114,425評論 24 450
  • Theremin 生產(chǎn)於1928年买猖,由前蘇聯(lián)科學家Leon Theremin 教授發(fā)明,同年由一位女演奏家作公開演...
    黑刺李閱讀 923評論 0 0