1.let命令
a. 塊級(jí)聲明命令,只在當(dāng)前代碼塊有效
b. 不存在變量提升,只有在聲明后才可調(diào)用
c. 暫時(shí)性死區(qū),變量在沒有聲明完成前調(diào)用
d. 不允許重復(fù)聲明相同的變量
// IIFE 寫法
(function () {
var tmp = ...;
...
}());
// 塊級(jí)作用域?qū)懛?{
let tmp = ...;
...
}
const命令
大部分同1,指向一個(gè)固定的內(nèi)存地址,值是可變的,如果想保存數(shù)據(jù)的一致性,使用Object.freeze()將對(duì)象凍結(jié)。import命令
class命令
ES5 的繼承,實(shí)質(zhì)是先創(chuàng)造子類的實(shí)例對(duì)象this,然后再將父類的方法添加到this上面(Parent.apply(this))。ES6 的繼承機(jī)制完全不同,實(shí)質(zhì)是先將父類實(shí)例對(duì)象的屬性和方法,加到this上面(所以必須先調(diào)用super方法),然后再用子類的構(gòu)造函數(shù)修改this。變量的解構(gòu)賦值 含有Iterator 接口的數(shù)據(jù)結(jié)構(gòu)皆可
數(shù)組的元素是按次序排列的,變量的取值由它的位置決定;而對(duì)象的屬性沒有次序,變量必須與屬性同名,才能取到正確的值。模板字符串
let a = 'weil'
console.log(`我是${a}`) // 我是weil
- 標(biāo)簽?zāi)0?/li>
alert`hello` // 等同于 alert('hello')
新增字符串方法
includes() 判斷字符串中是否包含 某個(gè)字符 返回 boolean
startsWith() 判斷字符串開頭是否為 某個(gè)字符 返回boolean
endsWith() 判斷字符串是否以某個(gè)字符結(jié)尾 返回boolean字符串長(zhǎng)度補(bǔ)全功能 es7
padStart(str, length) str填入的字符串,length字符串長(zhǎng)度不足單位(前面補(bǔ)足)
padEnd(str, length) str填入的字符串,length字符串長(zhǎng)度不足單位 (結(jié)尾補(bǔ)足)消除空格
trimStart() 消除字符串開頭空格
trimEnd() 消除字符串結(jié)尾空格正則表達(dá)式
先行斷言 /\x(?=y)/.exec(str)
后行斷言 /\x(?!y)/.exec(str)二進(jìn)制和八進(jìn)制
二進(jìn)制:0b(0B)
八進(jìn)制:0o(0O)數(shù)值判斷
Number.isFinite() 數(shù)值是否有限
Number.isNaN() 參數(shù)類型不是NaN,Number.isNaN一律返回false
Number.isInterger() 判斷數(shù)值是否為整數(shù)允許為函數(shù)參數(shù)設(shè)置默認(rèn)值
函數(shù)的length屬性,將返回沒有指定默認(rèn)值的參數(shù)個(gè)數(shù)。也就是說,指定了默認(rèn)值后,length屬性將失真。
rest 參數(shù)之后不能再有其他參數(shù)(即只能是最后一個(gè)參數(shù)),否則會(huì)報(bào)錯(cuò)。
箭頭函數(shù) 改變this指向
箭頭函數(shù)有幾個(gè)使用注意點(diǎn)。
(1)函數(shù)體內(nèi)的this對(duì)象,就是定義時(shí)所在的對(duì)象,而不是使用時(shí)所在的對(duì)象。
(2)不可以當(dāng)作構(gòu)造函數(shù),也就是說,不可以使用new命令,否則會(huì)拋出一個(gè)錯(cuò)誤。
(3)不可以使用arguments對(duì)象,該對(duì)象在函數(shù)體內(nèi)不存在。如果要用,可以用 rest 參數(shù)代替。
(4)不可以使用yield命令,因此箭頭函數(shù)不能用作 Generator 函數(shù)。
如果所有函數(shù)都是尾調(diào)用,那么完全可以做到每次執(zhí)行時(shí),調(diào)用幀只有一項(xiàng),這將大大節(jié)省內(nèi)存。這就是“尾調(diào)用優(yōu)化”的意義。
尾遞歸,同尾調(diào)用只存在一個(gè)調(diào)用幀,所以永遠(yuǎn)不會(huì)發(fā)生“棧溢出”錯(cuò)誤,相對(duì)節(jié)省內(nèi)存。
擴(kuò)展運(yùn)算符 ...
Symbol() 將變量或者函數(shù)私有化
WeakSet() 和 WeakMap() 使用場(chǎng)景 儲(chǔ)存 DOM 節(jié)點(diǎn),而不用擔(dān)心這些節(jié)點(diǎn)從文檔移除時(shí),會(huì)引發(fā)內(nèi)存泄漏
let、const、class聲明的全局變量不與頂層屬性掛鉤(globalThis)
備注:總結(jié)自https://es6.ruanyifeng.com/#docs/let