首頁  >  文章  >  web前端  >  ecmascript5和6有什麼差別

ecmascript5和6有什麼差別

WBOY
WBOY原創
2022-07-01 16:33:591668瀏覽

ecmascript5和6的區別:1、ecmascript6中新增加了區塊級作用域,而ecmascript5中則沒有;2、ecmascript6可以設定預設函數參數,而ecmascript5則不可以設定;3、ecmascript6中可以使用箭頭函數,而ecmascript5中沒有箭頭函數。

ecmascript5和6有什麼差別

本教學操作環境:windows10系統、ECMAScript 6.0&&ECMAScript 5.0版本、Dell G3電腦。

ecmascript5和6有什麼區別

ECMAScripts5,即ES5,是ECMAScripts的第五次修訂,於2009年完成標準化ECMAScripts6,即ES6,是ECMAScripts的第六次修訂,於2025年完成,也稱ES2015ES6是繼ES5之後的一次改進,相對於ES5更加簡潔,提高了開發效率ES6新增的一些特性:

1)let聲明變數和const聲明常數,兩個都有區塊級作用域ES5中是沒有區塊級作用域的,且var有變數提升,在let中,使用的變數一定要進行宣告

2)箭頭函數ES6中的函數定義不再使用關鍵字function(),而是利用了()=>來進行定義

3)模板字串模板字串是增強版的字串,用反引號(`)標識,可以當作普通字串使用,也可以用來定義多行字串

4)解構賦值ES6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值

5 )... 展開運算子可以將陣列或物件裡面的值展開;也可以將多個值收集為一個變數

#具體如下:

##新增箭頭函數

簡化了寫法。箭頭函數適用於函數體只有一行的情況;當有多行時,可用普通函數增加可讀性。少打程式碼,結構清晰

明確了this。傳統JS的this是在運行的時候確定的,而不是在定義的時候確定的;而箭頭函數的this是在定義時就確定的,不能被改變,也不能被call,apply,bind這些方法修改。明確運行時候this指向誰,不用運行時判斷this指向

註:箭頭函數沒有自己的this,他的this就是外層的this,指向上一個不是箭頭函數的函數的this。因為js的機制,所以指向的是一個非箭頭函數的函數的作用域。

箭頭函數與普通函數的差異

  • 普通function的宣告在變數提升中是最高的,箭頭函數沒有函數提升

  • 箭頭函數沒有this,函數體內部的this對象就是定義的時候所在的對象而不是使用時所在的對象

  • 箭頭函數沒有arguments對象,該對像在函數體內不存在,如果要用,可以使用rest參數

  • 箭頭函數不能當建構函數,不能被new,沒有property

  • call和apply方法只有參數,沒有作用域

  • 不可以使用yield指令,因此箭頭函數不能做Generator函數

區塊級作用域

ES6中的let指令,宣告變量,用法和var差不多,但是let是為JavaScript新增了區塊級作用域,ES5中是沒有區塊級作用域的,且var有變數提升的概念,但是在let中,使用的變數一定要進行宣告;const宣告常數

ES6中變數的結構賦值,例如:var [a,b,c] = [0 ,1,2];

類別繼承

ES6中不再像ES5一樣使用原型鏈實作繼承,而是引入Class這個概念​​,聽起來和Java中的物件導向程式設計的語法有些像,但是二者是不一樣的。

擴展知識:

var、let、const的區別

var聲明變數可以重複聲明,而let不可以重複聲明

var是不受限於區塊級的,而let是受限於區塊級

var會與window相映射(會掛一個屬性),而let不與window相映射

var可以在宣告的上面存取變量,而let有暫存死區,在聲明的上面存取變數會報錯

const宣告之後必須賦值,否則會報錯

const定義不可變的量,改變了就會報錯

const和let一樣不會與window相映射、支援區塊級作用域、在宣告的上面存取變數會報錯

【相關推薦:

javascript影片教學web前端

以上是ecmascript5和6有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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