首頁  >  文章  >  web前端  >  es6和es5的差別有哪些

es6和es5的差別有哪些

青灯夜游
青灯夜游原創
2021-09-03 14:57:2424078瀏覽

區別:1、es6新增了箭頭函數,es5沒有;2、ES6中新增了區塊級作用域,es5沒有;3、ES6引進Class概念,不再像ES5一樣使用原型鏈實作繼承;4、ES6中可以設定預設函數參數,es5不行;5、ES6中新增了promise特性。

es6和es5的差別有哪些

#本教學操作環境: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){} ;

五、promise

promise產生背景:解決回呼地獄問題,處理非同步請求

promise用法:鏈式調用,成功和失敗的回調,三個狀態,pending狀態改變時觸發。狀態一旦改變就不會再變。

六、模板字串###################七、賦值結構########### #【推薦學習:###javascript進階教學###】###

以上是es6和es5的差別有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn