1.let??const
1.只在let命令所在的代碼塊內(nèi)有效
2.ES6 明確規(guī)定,如果區(qū)塊中存在let和const命令,這個(gè)區(qū)塊對(duì)這些命令聲明的變量,從一開(kāi)始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會(huì)報(bào)錯(cuò)
3.ES6 的塊級(jí)作用域必須有大括號(hào),如果沒(méi)有大括號(hào),JavaScript 引擎就認(rèn)為不存在塊級(jí)作用域
4.const命令聲明的常量也是不提升,同樣存在暫時(shí)性死區(qū),只能在聲明的位置后面使用
ES5 只有兩種聲明變量的方法:var命令和function命令。ES6 除了添加let和const命令,后面章節(jié)還會(huì)提到,另外兩種聲明變量的方法:import命令和class命令。所以,ES6 一共有 6 種聲明變量的方法。
為了保持兼容性,var命令和function命令聲明的全局變量,依舊是頂層對(duì)象的屬性;另一方面規(guī)定,let命令、const命令、class命令聲明的全局變量,不屬于頂層對(duì)象的屬性。也就是說(shuō),從 ES6 開(kāi)始,全局變量將逐步與頂層對(duì)象的屬性脫鉤。
2.字符串
1.ES6 為字符串添加了遍歷器接口,使得字符串可以被for...of循環(huán)遍歷。
for( let codePoint of 'foo') {console.log(codePoint) }
2.模板字符串(template string)是增強(qiáng)版的字符串,用反引號(hào)(`)標(biāo)識(shí)。它可以當(dāng)作普通字符串使用,也可以用來(lái)定義多行字符串,或者在字符串中嵌入變量
$('#result').append(` ?
There are<b>${basket.count}</b>itemsinyour basket,<em>${basket.onSale}</em>are on sale!
`);
3.includes():返回布爾值,表示是否找到了參數(shù)字符串
4.startsWith():返回布爾值,表示參數(shù)字符串是否在原字符串的頭部? ? endsWith():返回布爾值,表示參數(shù)字符串是否在原字符串的尾部
6.repeat(3):方法返回一個(gè)新字符串,表示將原字符串重復(fù)n次
7.padStart(5,'ab'):用于頭部補(bǔ)全,padEnd(5,'ab'):用于尾部補(bǔ)全
8.對(duì)字符串實(shí)例新增了trimStart()和trimEnd()這兩個(gè)方法。它們的行為與trim()一致,trimStart()消除字符串頭部的空格,trimEnd()消除尾部的空格。它們返回的都是新字符串,不會(huì)修改原始字符串
3.數(shù)值
1.ES6 提供了二進(jìn)制和八進(jìn)制數(shù)值的新的寫(xiě)法,分別用前綴0b(或0B)和0o(或0O)表示。如果要將0b和0o前綴的字符串?dāng)?shù)值轉(zhuǎn)為十進(jìn)制,要使用Number方法。
Number('0b111') // 7
Number('0o10') // 8
2.Number.isFinite()用來(lái)檢查一個(gè)數(shù)值是否為有限的(finite),即不是Infinity
3.Number.isNaN()用來(lái)檢查一個(gè)值是否為NaN
4.ES6 將全局方法parseInt()和parseFloat(),移植到Number對(duì)象上面,行為完全保持不變
// ES5的寫(xiě)法
parseInt('12.34') // 12? ? ? ? ?parseFloat('123.45#') // 123.45
// ES6的寫(xiě)法
Number.parseInt('12.34') // 12? ? ? ? ? Number.parseFloat('123.45#') // 123.45
5.Number.isInteger()用來(lái)判斷一個(gè)數(shù)值是否為整數(shù)
6.Math.trunc()方法用于去除一個(gè)數(shù)的小數(shù)部分,返回整數(shù)部分
7.Math.sign()方法用來(lái)判斷一個(gè)數(shù)到底是正數(shù)、負(fù)數(shù)、還是零。對(duì)于非數(shù)值,會(huì)先將其轉(zhuǎn)換為數(shù)值。參數(shù)為正數(shù),返回+1;參數(shù)為負(fù)數(shù),返回-1;參數(shù)為 0,返回0;參數(shù)為-0,返回-0;其他值,返回NaN。