摘要:最近重構(gòu)了一個(gè)項(xiàng)目,引入了部分用法,最大的感受是讓這門語(yǔ)言變得更加嚴(yán)謹(jǐn),更加方便。通過(guò)該方法獲得位置后還得比較一次才能判斷是否存在。再來(lái)看看的寫法使用數(shù)組來(lái)初始化一個(gè),構(gòu)造器能確保不重復(fù)地使用這些值。下面提供鏈接,供有興趣的朋友參考。
最近重構(gòu)了一個(gè)SPA項(xiàng)目,引入了部分ES6用法,最大的感受是ES6讓javascript這門語(yǔ)言變得更加嚴(yán)謹(jǐn),更加方便。本篇將結(jié)合實(shí)戰(zhàn)經(jīng)驗(yàn),對(duì)最常用的部分ES6語(yǔ)法進(jìn)行說(shuō)明,并對(duì)比ES6之前的做法,談?wù)勈褂肊S6的好處。模板字面量
在es6之前,在js中拼接字符串,可以這樣:
let name = "es6" let str = "Hello, " + name + "."
而在es6中,可以用使用反引號(hào)(`)來(lái)包裹普通字符串,如下:
let name = "es6" let str = `Hello, ${name}.`
用來(lái)拼接變量時(shí)還是很方便的。
includes() 方法在數(shù)組和字符串中,經(jīng)常會(huì)遇到這樣一個(gè)問(wèn)題:判斷該數(shù)組或字符串中是否存在某個(gè)值。
在ES6之前,可以這樣做:
let str = "abcdef" console.log(str.indexOf("b") > -1)
這當(dāng)然沒(méi)有問(wèn)題,但是語(yǔ)義上顯得不夠直觀,indexOf()方法是獲得指定值的索引位置。通過(guò)該方法獲得位置后還得比較一次才能判斷是否存在。
我們?cè)賮?lái)看看ES6的作法:
let str = "abcdef" console.log(str.includes("b"))
顯得更加清晰明了。但是,如果判斷某個(gè)值是否在數(shù)組或字符串中存在,那么includes方法是非常方便的,但如果要獲得某個(gè)值的索引位置,還是indexOf方法更合適。includes方法并不是indexOf方法的替代。
注意:和indexOf()一樣,includes()在數(shù)組和字符串中都可以使用。
求最值是很常見的一個(gè)操作,我們先看看在ES6之前是怎么做的:
let arr = [25, 50, 999, 100] console.log(Math.max.apply(Math, arr))
該方法是可行的,但使用 apply() 讓人覺(jué)得有一絲困惑,這里使用的額外語(yǔ)法混淆了代碼的真實(shí)意圖。
再看看ES6的寫法:
// Math.max() 不允許傳入數(shù)組 // 所以我們用擴(kuò)展運(yùn)算符把數(shù)組中的值展開成多個(gè)獨(dú)立的值,再傳入 console.log(Math.max(...arr))
這樣的代碼是不是看起來(lái)清晰多了?并且擴(kuò)展運(yùn)算符還可以與其他參數(shù)混用,比如:
console.log(Math.max(...arr, 1000, 888))數(shù)組去重
這是一個(gè)很高頻的面試問(wèn)題,ES6之前,可以這樣:
function unique(arr) { let temp = [] for (let i = 0; i < arr.length; i++) { if (temp.includes(arr[i]) === false) { temp.push(arr[i]) } } return temp } let numbers = [2, 2, 3, 6, 2, 3, 5] console.log(unique(numbers))
當(dāng)然數(shù)組去重有多種寫法,我這里只列舉一個(gè),供大家參考。
再來(lái)看看es6的寫法:
let arr = [2, 2, 3, 6, 2, 3, 5] arr = [...new Set(arr)] console.log(arr)
使用數(shù)組來(lái)初始化一個(gè)Set,Set構(gòu)造器能確保不重復(fù)地使用這些值。很明顯,es6的寫法更簡(jiǎn)潔明了。
Vuex中的使用export default { computed: { // 使用對(duì)象展開運(yùn)算符將 getter 混入 computed 對(duì)象中 ...mapGetters([ "doneTodosCount", "anotherGetter" ]) } }
用過(guò)vuex的應(yīng)該熟悉這樣一段代碼,這里運(yùn)用擴(kuò)展運(yùn)算符配合mapGetters 輔助函數(shù),會(huì)將上面代碼解析成如下形式:
export default { computed: { doneTodosCount () {}, anotherGetter () {} } }對(duì)象的簡(jiǎn)寫
現(xiàn)有一個(gè)對(duì)象構(gòu)造函數(shù),其返回一個(gè)對(duì)象,對(duì)象中包含屬性和值,在es6之前,寫法如下:
function createPerson (name, age) { return { name: name, age: age } }
es6提供了簡(jiǎn)寫方式,當(dāng)對(duì)象的一個(gè)屬性名稱與本地變量名相同時(shí),你可以簡(jiǎn)單書寫名稱而省略冒號(hào)與值。可以這樣:
function createPerson (name, age) { return { name, age } }
這個(gè)特性在vue單文件組件中會(huì)常常遇到,比如:
components: { otherComponent }方法的簡(jiǎn)寫
現(xiàn)有一個(gè)對(duì)象,對(duì)象中有一個(gè)方法,在es6之前,方法可以這樣寫:
var person = { name: "foo", sayName: function () { console.log(this.name) } }
es6提供了簡(jiǎn)寫方法的寫法,通過(guò)省略冒號(hào)與function關(guān)鍵字,你可以這樣:
var person = { name: "foo", sayName () { console.log(this.name) } }延伸閱讀
本文只列出了部分es6語(yǔ)法,對(duì)于有些特性,如promise,箭頭函數(shù),await等,在我的項(xiàng)目中也會(huì)頻繁使用,但網(wǎng)上有很好的文章,就不細(xì)說(shuō)了。下面提供鏈接,供有興趣的朋友參考。
大白話講解Promise
ECMAScript 6 入門
理解 JavaScript 的 async/await
ECMAScript 6 入門
Understanding ECMAScript 6
ES6讓js這門語(yǔ)言變得更加精細(xì),更加強(qiáng)大。雖然不是非得掌握es6才能編程,但是掌握部分特性能提高開發(fā)效率。何樂(lè)而不為呢?這些都是我在項(xiàng)目中的使用心得,本文就當(dāng)拋磚了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/96114.html
摘要:雖然今年沒(méi)有換工作的打算但為了跟上時(shí)代的腳步還是忍不住整理了一份最新前端知識(shí)點(diǎn)知識(shí)點(diǎn)匯總新特性,語(yǔ)義化瀏覽器的標(biāo)準(zhǔn)模式和怪異模式和的區(qū)別使用的好處標(biāo)簽廢棄的標(biāo)簽,和一些定位寫法放置位置和原因什么是漸進(jìn)式渲染模板語(yǔ)言原理盒模型,新特性,偽 雖然今年沒(méi)有換工作的打算 但為了跟上時(shí)代的腳步 還是忍不住整理了一份最新前端知識(shí)點(diǎn) 知識(shí)點(diǎn)匯總1.HTMLHTML5新特性,語(yǔ)義化瀏覽器的標(biāo)準(zhǔn)模式和怪...
摘要:雖然今年沒(méi)有換工作的打算但為了跟上時(shí)代的腳步還是忍不住整理了一份最新前端知識(shí)點(diǎn)知識(shí)點(diǎn)匯總新特性,語(yǔ)義化瀏覽器的標(biāo)準(zhǔn)模式和怪異模式和的區(qū)別使用的好處標(biāo)簽廢棄的標(biāo)簽,和一些定位寫法放置位置和原因什么是漸進(jìn)式渲染模板語(yǔ)言原理盒模型,新特性,偽 雖然今年沒(méi)有換工作的打算 但為了跟上時(shí)代的腳步 還是忍不住整理了一份最新前端知識(shí)點(diǎn) 知識(shí)點(diǎn)匯總1.HTMLHTML5新特性,語(yǔ)義化瀏覽器的標(biāo)準(zhǔn)模式和怪...
摘要:順便一說(shuō),這首歌的原唱是秋田,中島當(dāng)年嗓子壞了,才有這歌。中文是直接翻譯來(lái)的,作曲是秋田。一部電影春夏秋冬又一春春夏秋冬又一春是由金基德執(zhí)導(dǎo),金英民吳英秀金基德主演的一部韓國(guó)電影。年月日于韓國(guó)上映。 原鏈接: http://bluezhan.me/weekly/#/9-2 1、web前端 Angular vs. React vs. Vue: A 2017 comparison 9 S...
摘要:順便一說(shuō),這首歌的原唱是秋田,中島當(dāng)年嗓子壞了,才有這歌。中文是直接翻譯來(lái)的,作曲是秋田。一部電影春夏秋冬又一春春夏秋冬又一春是由金基德執(zhí)導(dǎo),金英民吳英秀金基德主演的一部韓國(guó)電影。年月日于韓國(guó)上映。 原鏈接: http://bluezhan.me/weekly/#/9-2 1、web前端 Angular vs. React vs. Vue: A 2017 comparison 9 S...
閱讀 1888·2021-11-17 09:33
閱讀 6479·2021-10-12 10:20
閱讀 2303·2021-09-22 15:50
閱讀 1790·2021-09-22 15:10
閱讀 620·2021-09-10 10:51
閱讀 626·2021-09-10 10:50
閱讀 3038·2021-08-11 11:19
閱讀 1782·2019-08-30 15:55