let, const
const的定義是不可重新賦值的值,不同于不可變的值;const定義的Object,在定以后仍可修改屬性。
使用場(chǎng)景很廣,包括常量,配置項(xiàng),以及引用的組件,定義的大部分中間變量等
項(xiàng)目中的一些例子:
const unSubscribe = $ngRedux.connect(state => {
return {
noNoVictim: noVictim.id.indexOf(state.session.id) > -1
}
}, {})($scope)
const LZString = require('lz-string')
模板字符串
模板字符串中除了可以使用變量,也可以使用函數(shù)返回值,對(duì)象的屬性等;
const start = 'hi all'
const getName = ()=> {
return 'mochase'
}
const conf = {
fav: 'commic'
}
const msg = `${start}, my name is ${getName()}, ${conf.fav} is my favourite`
對(duì)象簡(jiǎn)寫(xiě)
const config = {
//指定原型對(duì)象
_proto_: basicConfig,
//屬性簡(jiǎn)寫(xiě)
bookNum,
//方法簡(jiǎn)寫(xiě)
getBookNum (){
return this.bookNum
}
}
箭頭函數(shù)
箭頭函數(shù)沒(méi)有獨(dú)立執(zhí)行上下文(this),所以其內(nèi)部引用的this對(duì)象會(huì)直接訪問(wèn)父級(jí)
在未使用箭頭函數(shù)前,我們?cè)谶^(guò)程函數(shù)中使用父級(jí) this,需要將其顯式緩存到另一個(gè)中間變量中,因?yàn)檫^(guò)程函數(shù)有獨(dú)立的 this變量,會(huì)覆蓋父級(jí);
箭頭函數(shù)不但沒(méi)有獨(dú)立 this,他也沒(méi)有獨(dú)立的 arguments,所以如果需要取不定參的時(shí)候,要么使用 function,要么用 ES6 的另一個(gè)新特性 rest(具體在 rest 中會(huì)有詳解)
解構(gòu)
//解構(gòu)可以設(shè)置默認(rèn)值
const {book1, book3 = 'not find'} = bookCollection()
//解構(gòu)時(shí)可以取到指定對(duì)象的任何屬性,包括它包含的方法
const {length: setLength} = bookSet //setLength = bookSet.length = 3
擴(kuò)展運(yùn)算符...
rest + spread
//rest得到的是一個(gè)真正的數(shù)組而不是一個(gè)偽數(shù)組
const getOptions= function(...args){
console.log(args.join) //function
}
Promise
多個(gè)異步任務(wù)同時(shí)執(zhí)行用promise.all, 順序執(zhí)行用鏈?zhǔn)秸{(diào)用
//Promise.all
Promise
.all([jsBuildPromise, cssBuildPromise])
.then(() => {
....
})
//chain
jsBuildPromise
.then(()=> cssBuildPromise)
.then(() => {
....
})