1. let const
let 表示申明變量。const 表示申明常量。
常量定義了就不能改了。對象除外,因?yàn)閷ο笾赶虻牡刂窙]變。
const在申明是必須被賦值。
兩者都為塊級作用域。
塊級作用域與函數(shù)作用域。任何一對花括號({和})中的語句集都屬于一個(gè)塊,在這之中定義的所有變量在代碼塊外都是不可見的,我們稱之為塊級作用域。函數(shù)作用域就好理解了,定義在函數(shù)中的參數(shù)和變量在函數(shù)外部是不可見的。
consta =1a =0//報(bào)錯(cuò)
2. 模塊字符串``
可以使用反引號``來進(jìn)行字符拼接。${}
3. 解構(gòu)
可以使用{}來對數(shù)組和對象進(jìn)行解構(gòu)。
4. 函數(shù)的參數(shù)默認(rèn)值
函數(shù)傳參可以有默認(rèn)值
// ES6;functionprintText(text ='default') {console.log(text);}
5. Spread / Rest 操作符...
Spread / Rest 操作符指的是 ...,具體是 Spread 還是 Rest 需要看上下文語境。
當(dāng)被用于迭代器中時(shí),它是一個(gè) Spread 操作符:迭代器 (Iterator)是按照一定的順序?qū)σ粋€(gè)或多個(gè)容 器 中的元素行進(jìn)遍歷的一種機(jī)制
functionfoo(x,y,z) {console.log(x,y,z);}letarr = [1,2,3];foo(...arr);// 1 2 3
6. 箭頭函數(shù)
不需要 function 關(guān)鍵字來創(chuàng)建函數(shù)
省略 return 關(guān)鍵字
this始終指向函數(shù)申明時(shí)所在作用域下的this值
//es5varfun =function() {}//es6varfn= () => {}
7. for of
for of遍歷的是鍵值對中的值
for in遍歷的是鍵值對中的鍵
8. class類
ES6 中支持 class 語法,不過,ES6的class不是新的對象繼承模型,它只是原型鏈的語法糖表現(xiàn)形式。
classStudent{constructor() {console.log("I'm a student.");? }study() {console.log('study!');? }staticread() {console.log("Reading Now.");? }}console.log(typeofStudent);// functionletstu =newStudent();// "I'm a student."stu.study();// "study!"stu.read();// "Reading Now."
9. 導(dǎo)入導(dǎo)出
導(dǎo)入improt
導(dǎo)出export default
10. promise
Promise 用于更優(yōu)雅地處理異步請求。
newPromise((resolve,reject) =>{setTimeout(function() {resolve('成功了!')? ? ? },1000)// reject("失敗了,wuwu")}).then(data=>{console.log(data)? ? }).catch(err=>{console.log(err)? ? })?
11. async/await
比promise更好的解決了回調(diào)地獄。
asyncfunction() {? awiatfn()}
12. Symbol
新的基本類型
13. Set集合
存儲任何類型的唯一值,即集合中所保存的元素是不重復(fù)的。類數(shù)組結(jié)構(gòu)。
arr = [1,2,3,1]letarrNew =newSet(arr)arrNew = [1,2,3]
14.set數(shù)組去重(只能用于數(shù)字)
let arr = [1,1,2,3,5,5,6]
let arrOne = new Set(arr)
console.log(arrOne)
15.from疊加new set 方法(可用于字符串或字符型)
let arr = ['n','j','m','k','k',1,6,6,6,]
let arrOne =Array.from(new Set(arr))
console.log(arrOne)