溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ecmascript5和6有哪些區(qū)別

發(fā)布時(shí)間:2022-07-02 09:58:23 來(lái)源:億速云 閱讀:175 作者:iii 欄目:web開發(fā)

這篇文章主要介紹了ecmascript5和6有哪些區(qū)別的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇ecmascript5和6有哪些區(qū)別文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

ecmascript5和6的區(qū)別:1、ecmascript6中新增加了塊級(jí)作用域,而ecmascript5中則沒有;2、ecmascript6可以設(shè)置默認(rèn)函數(shù)參數(shù),而ecmascript5則不可以設(shè)置;3、ecmascript6中可以使用箭頭函數(shù),而ecmascript5中沒有箭頭函數(shù)。

本教程操作環(huán)境:windows10系統(tǒng)、ECMAScript 6.0&&ECMAScript 5.0版本、Dell G3電腦。

ecmascript5和6區(qū)別

ECMAScripts5,即ES5,是ECMAScripts的第五次修訂,于2009年完成標(biāo)準(zhǔn)化ECMAScripts6,即ES6,是ECMAScripts的第六次修訂,于2025年完成,也稱ES2015ES6是繼ES5之后的一次改進(jìn),相對(duì)于ES5更加簡(jiǎn)潔,提高了開發(fā)效率ES6新增的一些特性:

1)let聲明變量和const聲明常量,兩個(gè)都有塊級(jí)作用域ES5中是沒有塊級(jí)作用域的,并且var有變量提升,在let中,使用的變量一定要進(jìn)行聲明

2)箭頭函數(shù)ES6中的函數(shù)定義不再使用關(guān)鍵字function(),而是利用了()=>來(lái)進(jìn)行定義

3)模板字符串模板字符串是增強(qiáng)版的字符串,用反引號(hào)(`)標(biāo)識(shí),可以當(dāng)作普通字符串使用,也可以用來(lái)定義多行字符串

4)解構(gòu)賦值ES6 允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值

5)... 展開運(yùn)算符可以將數(shù)組或?qū)ο罄锩娴闹嫡归_;還可以將多個(gè)值收集為一個(gè)變量

具體如下:

新增箭頭函數(shù)

簡(jiǎn)化了寫法。箭頭函數(shù)適用于函數(shù)體只有一行的情況;當(dāng)有多行時(shí),可用普通函數(shù)增加可讀性。 少打代碼,結(jié)構(gòu)清晰

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

注:箭頭函數(shù)沒有自己的this,他的this就是外層的this,指向上一個(gè)不是箭頭函數(shù)的函數(shù)的this。因?yàn)閖s的機(jī)制,所以指向的是一個(gè)非箭頭函數(shù)的函數(shù)的作用域。

箭頭函數(shù)與普通函數(shù)的區(qū)別

  • 普通function的聲明在變量提升中是最高的,箭頭函數(shù)沒有函數(shù)提升

  • 箭頭函數(shù)沒有this,函數(shù)體內(nèi)部的this對(duì)象就是定義的時(shí)候所在的對(duì)象而不是使用時(shí)所在的對(duì)象

  • 箭頭函數(shù)沒有arguments對(duì)象,該對(duì)象在函數(shù)體內(nèi)不存在,如果要用,可以使用rest參數(shù)

  • 箭頭函數(shù)不能作為構(gòu)造函數(shù),不能被new,沒有property

  • call和apply方法只有參數(shù),沒有作用域

  • 不可以使用yield命令,因此箭頭函數(shù)不能做Generator函數(shù)

塊級(jí)作用域

ES6中的let命令,聲明變量,用法和var差不多,但是let是為JavaScript新增了塊級(jí)作用域,ES5中是沒有塊級(jí)作用域的,并且var有變量提升的概念,但是在let中,使用的變量一定要進(jìn)行聲明;const聲明常量

ES6中變量的結(jié)構(gòu)賦值,比如:var [a,b,c] = [0,1,2];

類繼承

ES6中不再像ES5一樣使用原型鏈實(shí)現(xiàn)繼承,而是引入Class這個(gè)概念,聽起來(lái)和Java中的面向?qū)ο缶幊痰恼Z(yǔ)法有些像,但是二者是不一樣的。

擴(kuò)展知識(shí):

var、let、const的區(qū)別

var聲明變量可以重復(fù)聲明,而let不可以重復(fù)聲明

var是不受限于塊級(jí)的,而let是受限于塊級(jí)

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

var可以在聲明的上面訪問變量,而let有暫存死區(qū),在聲明的上面訪問變量會(huì)報(bào)錯(cuò)

const聲明之后必須賦值,否則會(huì)報(bào)錯(cuò)

const定義不可變的量,改變了就會(huì)報(bào)錯(cuò)

const和let一樣不會(huì)與window相映射、支持塊級(jí)作用域、在聲明的上面訪問變量會(huì)報(bào)錯(cuò)

關(guān)于“ecmascript5和6有哪些區(qū)別”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“ecmascript5和6有哪些區(qū)別”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI