一藐翎、ES5與ES6對比
var let const
1、ES5 聲明局部變量必須使用一個(gè)立即執(zhí)行函數(shù)实幕,而ES6 使用{}+let;
2、使用var會變量提升堤器,而使用let不會昆庇,但是let有一個(gè)臨時(shí)死區(qū),就是在還未聲明時(shí)調(diào)用會報(bào)錯(cuò)闸溃;
3整吆、let 的作用域在最近的 {} 之間;
4、const聲明局部常量辉川,只有一次賦值的機(jī)會表蝙,必須在聲明的時(shí)候賦值;
二穷遂、ES6新增的數(shù)據(jù)類型
ES6在原基礎(chǔ)七種數(shù)據(jù)類型(number、string娱据、boolean蚪黑、symbol、undefined中剩、null忌穿、object),在object上細(xì)分了幾種數(shù)據(jù)類型咽安。
symbol
靜態(tài)屬性和靜態(tài)方法:靜態(tài)屬性是可以直接通過構(gòu)造函數(shù)調(diào)用的屬性伴网,靜態(tài)方法是調(diào)用函數(shù)。
總結(jié):
1.Symbol()不能加new;
2.每一個(gè)Symbol()都是唯一;
3.創(chuàng)造私有屬性妆棒,要再塊級作用域以object[Symbol()] = ''保存;
object > set (Set是對象澡腾,可以儲存任何類型的唯一值)
作用:
1.數(shù)組去重
(1)是對象沸伏;(2)存儲的是唯一值;(3)對所有原始值進(jìn)行去重动分;(4)對所有對象的引用可以去重毅糟;
ES6之前的數(shù)組去重:
ES6數(shù)組去重:
Set的方法:
new Set().add()??new Set().has()??new Set().delete()??
object? > map
new Map() 是彌補(bǔ)了只能將字符串作為key的缺點(diǎn),new Map()可以將對象作為key;
object? > weakSet
對對象弱引用坟乾,如果一個(gè)對象被垃圾回收迹辐,則null;沒有辦法列出所有的值甚侣;
三明吩、ES6新增的API
Object.assign
深拷貝就是倆個(gè)對象沒有任何交集印荔,完美深拷貝是不可能的,因此Object.assign也是淺拷貝详羡;
淺拷貝就是“=”仍律,賦值,直接拷貝实柠,不管其實(shí)際內(nèi)存里有什么水泉;
深拷貝就是完全拷貝,包括其地址窒盐,內(nèi)存內(nèi)的茶行;
Object.assign是拷貝可枚舉的屬性,不可枚舉的屬性有toString()牧牢,__proto__看锉。
Array.from
變數(shù)組,可將偽數(shù)組變數(shù)組塔鳍;
ES 5? 寫法:a = Array.prototype.slice.call(a,0)?
ES6? 寫法:
let s = new Set(['foo',window])
Array.from(s)? ?// ["foo",window]
創(chuàng)建一個(gè)長度為5的空數(shù)組:
ES5:
Array.apply(null,{length:5})
ES6:
Array.from({length:5})? //創(chuàng)建一個(gè)長度為n的數(shù)組
Array.prototype.fill()
填充
Array.prototype.find()
Array.prototype.filter()
Array.prototype.findIndex
Array.prototype.copyWithin
Array.prototype.entries
Array.prototype.keys
Array.prototype.values
判斷一個(gè)字符串是否包含在其中的四種方法:
string.indexOf()
String.prototype.includes //?
string.search也可以伯铣,同時(shí)可以兼并正則;
string.match()
String.prototype.repeat
String.prototype.startsWith //以XX開頭? 可用xx.indexOf('x') === 0代替
String.prototype.endsWith //以XX結(jié)尾? 可用xx.indexOf('x') === xx.length-1代替
Number.EPSILON // 看JS的最小誤差
Number.isInteger //判斷是否為整數(shù)
Number.isSafeInteger?
Number.isFinite
Number.isNAN
parseInt的BUG