let和const命令
1蝇更、let和const均無(wú)變量提升。
2呼盆、let變量指向的地址可變年扩,const指向的地址不可變
3、let和const有塊級(jí)作用域访圃。也就是{}
4厨幻、暫時(shí)性鎖區(qū)
5、不允許重復(fù)聲明
6腿时、從 ES6 開(kāi)始况脆,全局變量將逐步與頂層對(duì)象的屬性脫鉤。
7批糟、globalThis對(duì)象
變量的解構(gòu)賦值
本質(zhì)上格了,這種寫法屬于“模式匹配”,只要等號(hào)兩邊的模式相同徽鼎,左邊的變量就會(huì)被賦予對(duì)應(yīng)的值盛末。
如果解構(gòu)不成功,變量的值就等于undefined
事實(shí)上纬傲,只要某種數(shù)據(jù)結(jié)構(gòu)具有 Iterator 接口满败,都可以采用數(shù)組形式的解構(gòu)賦值肤频。
1叹括、
let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
baz // "aaa"
let { p, p: [x, { y }] } = obj;
x // "Hello"
y // "World"
p // ["Hello", {y: "World"}]
字符串
字符串有iterator接口。
ES6新增模板字符串
1宵荒、支持換行汁雷。
2、支持{表達(dá)式}侠讯,內(nèi)部是可以使用表達(dá)式的,也可以調(diào)用函數(shù)暑刃,如果函數(shù)的返回值不是字符串厢漩,則會(huì)默認(rèn)調(diào)用toString函數(shù)。
ES6新增的字符串方法
includes():返回布爾值岩臣,表示是否找到了參數(shù)字符串溜嗜。
startsWith():返回布爾值宵膨,表示參數(shù)字符串是否在原字符串的頭部。
endsWith():返回布爾值炸宵,表示參數(shù)字符串是否在原字符串的尾部辟躏。
這三個(gè)方法都支持第二個(gè)參數(shù),表示開(kāi)始搜索的位置土全。
let s = 'Hello world!';
s.startsWith('world', 6) // true
s.endsWith('Hello', 5) // true
s.includes('Hello', 6) // false
上面代碼表示捎琐,使用第二個(gè)參數(shù)n時(shí),endsWith的行為與其他兩個(gè)方法有所不同裹匙。它針對(duì)前n個(gè)字符瑞凑,而其他兩個(gè)方法針對(duì)從第n個(gè)位置直到字符串結(jié)束。
repeat方法返回一個(gè)新字符串幻件,表示將原字符串重復(fù)n次拨黔。
padStart()用于頭部補(bǔ)全,padEnd()用于尾部補(bǔ)全绰沥。
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
上面代碼中篱蝇,padStart()和padEnd()一共接受兩個(gè)參數(shù),第一個(gè)參數(shù)是字符串補(bǔ)全生效的最大長(zhǎng)度徽曲,第二個(gè)參數(shù)是用來(lái)補(bǔ)全的字符串零截。
ES2019 對(duì)字符串實(shí)例新增了trimStart()
和trimEnd()
這兩個(gè)方法。它們的行為與trim()
一致秃臣,trimStart()
消除字符串頭部的空格涧衙,trimEnd()
消除尾部的空格。它們返回的都是新字符串奥此,不會(huì)修改原始字符串弧哎。
matchAll() replaceAll() 新增了。