區別:1、es6新增了箭頭函數,es5沒有;2、ES6中新增了區塊級作用域,es5沒有;3、ES6引進Class概念,不再像ES5一樣使用原型鏈實作繼承;4、ES6中可以設定預設函數參數,es5不行;5、ES6中新增了promise特性。
#本教學操作環境:windows7系統、ECMAScript 5&&ECMAScript 6版、Dell G3電腦。
ES6與ES5相比,新增了很多東西,如:
一、新增箭頭函數
箭頭函數解決的問題
#簡化了寫法。箭頭函數適用於函數體只有一行的情況;當有多行時,可用普通函數增加可讀性。 少打程式碼,結構清晰
#明確了this。傳統JS的this是在運行的時候確定的,而不是在定義的時候確定的;而箭頭函數的this是在定義時就確定的,不能被改變,也不能被call,apply,bind這些方法修改。 明確運行時候this指向誰,不用運行時判斷this指向
## this,祂的函數沒有自己的this,指向外層的this,指向外層的this,指向外層的this,指向外層的this,指向外層的this,指向外層的this,指向外層的this,指向外層的this,指向外層的this,指向上一個不是箭頭函數的函數的this。因為js的機制,所以指向的是一個非箭頭函數的函數的作用域。箭頭函數與普通函數的差異
#普通function的宣告在變數提升中是最高的,箭頭函數沒有函數提升
箭頭函數沒有this
,函數體內的this對象就是定義的時候所在的對象而不是使用時所在的對象箭頭函數沒有arguments
對象,該對像在函數體內不存在,如果要用,可以使用rest參數箭頭函數不能作為建構子
,不能被new,沒有property# #call和apply方法只有參數,沒有作用域
#ES6中的let指令,宣告變量,用法和var差不多,但是let是為JavaScript新增了區塊級作用域,ES5中是沒有區塊級作用域的,且var有變數提升的概念,但是在let中,使用的變數一定要進行宣告;const宣告常數
ES6中變數的結構賦值,例如:var [a,b,c] = [0,1,2];
三、類別繼承ES6中不再像ES5一樣使用原型鏈實作繼承,而是引入Class這個概念,聽起來和Java中的物件導向程式設計的文法有些像,但是二者是不一樣的。
四、設定預設函數參數ES6中可以設定預設函數參數,如function A(x,y=9){} ;
五、promisepromise產生背景:解決回呼地獄問題,處理非同步請求
promise用法:鏈式調用,成功和失敗的回調,三個狀態,pending狀態改變時觸發。狀態一旦改變就不會再變。 六、模板字串###################七、賦值結構########### #【推薦學習:###javascript進階教學###】###以上是es6和es5的差別有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!