1、let/const
1)作用域:es5中有全局作用域、函數作用域。es6中新增了塊級作用域
2)let定義的變量在所在塊級作用域外失效,嚴格模式下失效后直接報錯,
且不允許重復聲明同名變量
3)const用于聲明常量,聲明時必須賦值,也是在塊級作用域下有效
?
2、解構賦值
1) 數組解構賦值
包含默認值的寫法
2)對象解構賦值
包含默認值的寫法
{let a,b=6
{a,b}={a:1,b:2 }
}
3)使用場景
變量交換
函數以數組、對象為返回值
選擇性接收數據
下圖輸出1 4
取返回數組首項
a=1 b=[3,4,5]
只要兩邊能匹配,都能解構賦值
?
3、字符串擴展
1)unicode編碼
0XFFFF是unicode單字符編碼的最大范圍
若想輸出編碼值大于0xffff的
用大括號包裹即可;
2)unicode編碼處理新方法
3)字符串新方法
判斷某字符串中是否包含某字符,返回布爾值:
.includes(''char")
判斷某字符串是否已某字符或字符串開頭(結尾)
.startsWith()
.endsWith()
重復n次字符串
.repeat(n)
不足自動在首尾補齊
.padStrat(length,'char')
.padEnd(length,'char')
4)模板字符串
用反引號包裹,讓我們更優雅地拼接變量和字符串
變量用${}進行包裹
5)標簽模板?
?
4、數值擴展
1)
Number添加了許多靜態方法
isFinite() 判斷是否有盡
isNaN() 判斷是否不是數字
isIntegeger()判斷是否整數
2)
取整
Math.truc(num)
判斷正負,返回+/-1 0 NaN
Math.sign(num)
?
5、數組擴展
1)Array
不管元素的類型,返回由參數組成的數組實例
Array.of(arg1,arg2,...)
把偽數組和集合轉換成真正的數組
Array.from(fakeArr)
返回一個新數組,其元素經過callback處理
Array.from(arr,callback)
2)
填充數組,把數組內元素全部換為char
arr.fill(subchar)
指定替換范圍的索引
arr.fill(subchar,start,end)
3)keys/values/entries
arr.keys()
返回arr下標(索引)的集合
arr.values()
返回元素值集合
arr.entries()
返回索引及元素
arr.find/findIndex(function)
前一個返回符合條件的第一個數組元素
或者返回第一個符合條件的索引
arr.inclues(char)
數組中是否包含某值,完全相等,返回布爾類型
?
6、函數擴展
1)默認值
function test(x,y='hello'){...}
test('you')
默認值后面不可以有沒有默認值的變量
2)作用域
輸出kill kill
注意作用域,在函數定義內部先找
3)rest
...arg
類似arguements,將未知的實參合為一個數組
4)擴展運算符
rest的逆運用
...arr
將數組按元素拆成離散的值
5)箭頭函數
匿名函數的新定義方式
(參數1,參數2,...)=>{函數體}
簡寫,只有一個參數時,只有一句返回值的語句
參數=>返回值語句
無參
()=>返回值語句
6)偽調用
某個函數返回另一個函數的調用
?
7、對象擴展
1)鍵的省略
2)屬性表達式
在es5中我們的屬性名總是一個固定的值,在es6中,我們
可以使用表達式來作屬性名了,用中括號包裹即可
var obj={
['a'+'b']:5
}
3)新增api
Object.is(obj1,obj2)
判斷兩個對象是否相等,是嚴格相等
Object.assign(obj1,obj2)
拷貝屬性,淺拷貝。繼承屬性及不可枚舉的屬性不可拷貝
?