正則的擴(kuò)展
1、RegExp構(gòu)造函數(shù)
在ES5中结借,RegExp構(gòu)造函數(shù)的參數(shù)有兩種情況身冬。第一種情況是衅胀,參數(shù)是字符串,這時(shí)第二個(gè)參數(shù)表示正則表達(dá)式的修飾符
第二個(gè)情況滚躯,參數(shù)是一個(gè)正則表達(dá)式
但是ES5不允許此時(shí)使用第二個(gè)參數(shù),添加修飾符,否則會(huì)報(bào)錯(cuò)
ES6改變了這種行為
如果RegExp構(gòu)造函數(shù)第一個(gè)參數(shù)是一個(gè)正則對(duì)象哀九,那么可以使用第二個(gè)參數(shù)指定修飾符剿配。返回的正則表達(dá)啊是會(huì)忽略原有的正則表達(dá)式的修飾符搅幅,只使用新指定的修飾符
2阅束、字符串的正則方法
3.u修飾符(ES6對(duì)正則表達(dá)式添加了u修飾符茄唐,含義為Unicode模式息裸,用來正確處理大于\uFFFF字符)
原因是ES5不支持四個(gè)字節(jié)的UTF-16編碼,而\uD83D\uDc2A是一個(gè)四個(gè)字節(jié)的UTF-16編碼沪编,ES5會(huì)將其識(shí)別為兩個(gè)字符呼盆,導(dǎo)致第二行代碼結(jié)果為true,第一行是ES6的寫法蚁廓,所以第一行結(jié)果為false访圃。
注意:對(duì)于碼點(diǎn)大于\0xfff的字符,點(diǎn)字符不能識(shí)別相嵌,必須加上u修飾符腿时;使用u修飾符后,所有量詞都會(huì)正確識(shí)別碼點(diǎn)大于0xFFFF的Unicode字符饭宾;預(yù)定義模式,u修飾符也影響到預(yù)定義模式批糟,能夠正確識(shí)別瑪點(diǎn)大于0xFFFF的Unicode字符;i修飾符看铆;
4弹惦、y修飾符
除了u修飾符否淤,還為正則表達(dá)式添加了y修飾符,叫做粘連修飾符棠隐。y修飾符與g修飾符類似叹括,也是全局匹配,g修飾符只要剩余位置中存在匹配就可,y修飾符確保匹配必須從剩余的第一個(gè)位置開始
5宵荒、sticky汁雷,與y修飾符相匹配,ES6的正則對(duì)象多了stciky屬性报咳,表示是否設(shè)置了y修飾符
6侠讯、flags屬性,ES6為正則表達(dá)式新增了flags屬性暑刃,會(huì)返回正則表達(dá)式的修飾符
7厢漩、RegExp.escape(),字符串必須轉(zhuǎn)義,才能作為正則模式
8岩臣、S修飾符:doAll模式
9溜嗜、后行斷言
10宵膨、Unicode屬性類
數(shù)值的擴(kuò)展
ES6提供了二進(jìn)制和八進(jìn)制,分別用前綴0b和0o表示
二進(jìn)制和八進(jìn)制轉(zhuǎn)化為十進(jìn)制炸宵,使用Number方法可以轉(zhuǎn)換
Number.isFinite()辟躏、Number.isNaN(),Number.isFinite()用來檢查一個(gè)數(shù)值是否為有限的土全,Number.isNaN()用來檢查一個(gè)值是否為NaN
Number.parseInt()捎琐、Number.parseFloat()移到Number對(duì)象上面,行為完全保持不變;
Number.isInteger() 用來判斷一個(gè)值是否為整數(shù);
Number.EPSILON,新增一個(gè)極小的常量Number.EPSILON其目的是為了為浮點(diǎn)數(shù)計(jì)算裹匙,設(shè)置一個(gè)誤差范圍瑞凑;
安全整數(shù)和Number.isSafeInteger()用來判斷一個(gè)整數(shù)是否落在這個(gè)范圍內(nèi)(-2^53-2^53)
Math對(duì)象擴(kuò)展,Math.trunc()方法用于去除一個(gè)數(shù)的小數(shù)部分概页,返回整數(shù)部分籽御;對(duì)于非數(shù)值,Math惰匙。trunc內(nèi)部使用Number方法將其先轉(zhuǎn)為數(shù)值技掏;對(duì)于空值和無法截取整數(shù)的值,返回NaN徽曲;
Math.sign()判斷一個(gè)數(shù)到底是整數(shù)零截、負(fù)數(shù)、還是零
Math.cbrt()計(jì)算一個(gè)數(shù)的立方根
Math.clz32():JavaScript的整數(shù)使用32位二進(jìn)制形式表示秃臣,Math.clz32方法返回一個(gè)數(shù)的32位無符號(hào)整數(shù)形式有多少個(gè)前導(dǎo)0涧衙。(小數(shù)只考慮整數(shù)部分,對(duì)于空值或其他類型的值奥此,Math.clz32方法會(huì)將他們轉(zhuǎn)為數(shù)值)
Math.imul()方法返回兩個(gè)數(shù)以32位帶符號(hào)整數(shù)形式相乘的結(jié)果弧哎,返回也是一個(gè)32位的帶符號(hào)整數(shù)
Math.fround()返回一個(gè)數(shù)的單精度浮點(diǎn)數(shù)形式
Math.fround()、Math.htpot()方法返回所有的平方和的平方跟
對(duì)數(shù)方法
1稚虎、Math.expm1() Math.expm1(x)返回ex-1撤嫩,即返回Math.exp(x)-1.
2、Math.log1p(),返回一個(gè)1+x的自然對(duì)數(shù)蠢终,即Math.log(1+x).如果x小于-1序攘,返回NaN
3、Math.log10(x)返回以10為底的x的對(duì)數(shù)寻拂。如果x小于0程奠,則返回NaN。
4祭钉、Math.log2()瞄沙,Math.log2(x)返回以2為底的x的對(duì)數(shù)。如果x小于0,則返回NaN距境。
三角函數(shù)方法
Math.sinh(x)返回x的雙曲正弦(hyperbolic sine)
Math.cosh(x)返回x的雙曲余弦(hyperbolic cosine)
Math.tanh(x)返回x的雙曲正切(hyperbolic tangent)
Math.asinh(x)返回x的反雙曲正弦(inverse hyperbolic sine)
Math.acosh(x)返回x的反雙曲余弦(inverse hyperbolic cosine)
Math.atanh(x)返回x的反雙曲正切(inverse hyperbolic tangent)