成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ECMAScript6 新特性——“字符串的擴(kuò)展”

BlackMass / 2331人閱讀

摘要:吉字符串的遍歷器接口為字符串添加了遍歷器接口,使得字符串可以被循環(huán)遍歷。提供字符串實(shí)例的方法,用來(lái)將字符的不同表示方法統(tǒng)一為同樣的形式,這稱為正規(guī)化。返回布爾值,表示參數(shù)字符串是否在源字符串的頭部。

1 字符串的Unicode表示法

ES6 只要將碼點(diǎn)放入大括號(hào),就能正確解讀該字符;

var x = "u20bb7";
document.write(x); //?7
var x = "u{20bb7}";
document.write(x); //? 可正確返回
2 codePointAt()

JavaScript對(duì)于那些需要4個(gè)字節(jié)儲(chǔ)存的字符(Unicode碼點(diǎn)大于0xFFFF的字符),JavaScript會(huì)認(rèn)為它們是兩個(gè)字符。

var s = "?";

s.length // 2
s.charAt(0) // ""
s.charAt(1) // ""
s.charCodeAt(0) // 55362
s.charCodeAt(1) // 57271

ES6提供了codePointAt方法,能夠正確處理4個(gè)字節(jié)儲(chǔ)存的字符,返回一個(gè)字符的碼點(diǎn)。

var x = "u{20bb7}";
console.log(x); //吉
console.log(x.length);
console.log(x.codePointAt(0)); //134071
console.log(x.codePointAt(0).toString(16)); //20bb7
console.log(x.codePointAt(1)); //57271

codePointAt(0)返回的是十進(jìn)制碼點(diǎn);codePointAt(1)則返回的結(jié)果與charCodeAt方法返回的結(jié)果相同

3 String.fromCodePoint()

ES5提供String.fromCharCode方法,用于從碼點(diǎn)返回對(duì)應(yīng)字符,但是這個(gè)方法不能識(shí)別32位的UTF-16字符(Unicode編號(hào)大于0xFFFF)。

ES6提供了String.fromCodePoint方法,可以識(shí)別0xFFFF的字符,彌補(bǔ)了String.fromCharCode方法的不足。在作用上,正好與codePointAt方法相反。

console.log(String.fromCharCode("0x20bb7")); //?
console.log(String.fromCodePoint("0x20bb7")); //吉
4 字符串的遍歷器接口

ES6為字符串添加了遍歷器接口,使得字符串可以被for...of循環(huán)遍歷。

這個(gè)遍歷器最大的優(yōu)點(diǎn)是可以識(shí)別大于0xFFFF的碼點(diǎn)

var text = String.fromCodePoint("0x20bb7"); //吉
for (let i = 0; i < text.length; i++) {
    console.log(text[i]);
    //?
    //?
}
for (let codePoint of text) {
    console.log(codePoint); //?
}
5 at()

ES7為字符串實(shí)例提供了at方法,可以識(shí)別Unicode編號(hào)大于0xFFFF的字符。

6 normalize()

ES6提供字符串實(shí)例的normalize()方法,用來(lái)將字符的不同表示方法統(tǒng)一為同樣的形式,這稱為Unicode正規(guī)化。

"u01D1".normalize() === "u004Fu030C".normalize()
// true

不過(guò),normalize方法目前不能識(shí)別三個(gè)或三個(gè)以上字符的合成。

7 includes(),startsWith(),endsWith()

傳統(tǒng)上,JavaScript只有indexOf方法,可以用來(lái)確定一個(gè)字符串是否包含在另一個(gè)字符串中。ES6又提供了三種新方法。

includes():返回布爾值,表示是否找到了參數(shù)字符串。

startsWith():返回布爾值,表示參數(shù)字符串是否在源字符串的頭部。

endsWith():返回布爾值,表示參數(shù)字符串是否在源字符串的尾部。

var str = "string";
console.log(str.includes("r")); //True
console.log(str.startsWith("str")); //True
console.log(str.endsWith("g")); //True

另外,他們都支持第二個(gè)參數(shù)用來(lái)表示開(kāi)始搜索的位置,但endsWith針對(duì)的則是前n個(gè)字符

8 repeat()

repeat方法返回一個(gè)新字符串,表示將原字符串重復(fù)n次。

var str = "string";
console.log(str.repeat(2)); //stringstring
9 padStart(),padEnd()

padStart用于頭部補(bǔ)全,padEnd用于尾部補(bǔ)全。

兩個(gè)參數(shù):1個(gè)是最小字符串長(zhǎng)度;另一個(gè)是補(bǔ)全的字符串

10 模板字符串

模板字符串(template string)是增強(qiáng)版的字符串,用反引號(hào)(`)標(biāo)識(shí)。它可以當(dāng)作普通字符串使用,也可以用來(lái)定義多行字符串,或者在字符串中嵌入變量。

var name = "Oliver"; //變量
var info = `hello world
 welcome you`; //多行字符串
console.log(`hello ${name}`,info); //嵌套變量,輸出多行字符串

變量應(yīng)該寫在${}大括號(hào)里面,并且可以放入任意的JS表達(dá)式;

11 標(biāo)簽?zāi)0?/b>

下面的例子實(shí)際上是函數(shù)參數(shù)如下的調(diào)用:

tag(["Hello ", "; Infomation: ", ""],Oliver,welcome to use the system.);

tag函數(shù)寫法如下:

let user = {
    name: "Oliver",
    info: "welcome to use the system."
};
tag`Hello ${user.name}; Infomation: ${user.info}`;
function tag(s, v1, v2) {
    console.log(s); //["Hello ", "; Infomation: ", ""]
    console.log(v1); //Oliver
    console.log(v2); //welcome to use the system.
}
12 String.raw()

String.raw方法,往往用來(lái)充當(dāng)模板字符串的處理函數(shù),返回一個(gè)斜杠都被轉(zhuǎn)義(即斜杠前面再加一個(gè)斜杠)的字符串,對(duì)應(yīng)于替換變量后的模板字符串。

String.raw`Hi
${2+3}!`;
// "Hi
5!"

String.raw`Hiu000A!`;
// "Hiu000A!"

String.raw方法也可以作為正常的函數(shù)使用。這時(shí),它的第一個(gè)參數(shù),應(yīng)該是一個(gè)具有raw屬性的對(duì)象,且raw屬性的值應(yīng)該是一個(gè)數(shù)組。

String.raw({ raw: "test" }, 0, 1, 2);
// "t0e1s2t"

// 等同于
String.raw({ raw: ["t","e","s","t"] }, 0, 1, 2);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79056.html

相關(guān)文章

  • 【前端】ES6入門基礎(chǔ)知識(shí)

    摘要:關(guān)于的入門了解新增模板字符串為提供了簡(jiǎn)單的字符串插值功能箭頭函數(shù)操作符左邊為輸入的參數(shù),而右邊則是進(jìn)行的操作以及返回的值。將對(duì)象納入規(guī)范,提供了原生的對(duì)象。增加了和命令,用來(lái)聲明變量。 關(guān)于ES6的入門了解 新增模板字符串(為JavaScript提供了簡(jiǎn)單的字符串插值功能)、箭頭函數(shù)(操作符左邊為輸入的參數(shù),而右邊則是進(jìn)行的操作以及返回的值Inputs=>outputs。)、for-o...

    philadelphia 評(píng)論0 收藏0
  • ECMAScript6 特性——“l(fā)et和const命令”

    摘要:基本用法所聲明的變量,只在命令所在的代碼塊內(nèi)有效。在循環(huán)中適合使用不存在變量提升不像那樣會(huì)發(fā)生變量提升現(xiàn)象暫時(shí)性死區(qū)只要塊級(jí)作用域內(nèi)存在命令,它所聲明的變量就綁定這個(gè)區(qū)域,不再受外部的影響。塊級(jí)作用域?qū)嶋H上為新增了塊級(jí)作用域。 1 let 基本用法 所聲明的變量,只在let命令所在的代碼塊內(nèi)有效。 { let b = 100; console.log(b); //100...

    PascalXie 評(píng)論0 收藏0
  • ECMAScript6 特性——“正則擴(kuò)展

    摘要:第二個(gè)參數(shù)指定修飾符,如果存在則使用指定的修飾符。屬性表示是否設(shè)置了修飾符屬性的屬性返回正則表達(dá)式的正文的屬性返回正則表達(dá)式的修飾符字符串必須轉(zhuǎn)義,才能作為正則模式。 1 RegExp構(gòu)造函數(shù) ES6 允許RegExp構(gòu)造函數(shù)接受正則表達(dá)式作為參數(shù)。第二個(gè)參數(shù)指定修飾符,如果存在則使用指定的修飾符。 var regexp = new RegExp(/xyz/i, ig); consol...

    Shisui 評(píng)論0 收藏0
  • ECMAScript6 特性——“數(shù)值擴(kuò)展

    摘要:二進(jìn)制和八進(jìn)制表示法提供了二進(jìn)制和八進(jìn)制數(shù)值的新的寫法,分別用前綴或和或表示。用來(lái)檢查是否為有窮以及是否為這兩個(gè)新方法只對(duì)數(shù)值有效,非數(shù)值一律返回。引入了和這兩個(gè)常量,用來(lái)表示這個(gè)范圍的上下限。因?yàn)橛芯认拗疲^(guò)的次方的值無(wú)法精確表示。 1 二進(jìn)制和八進(jìn)制表示法 ES6提供了二進(jìn)制和八進(jìn)制數(shù)值的新的寫法,分別用前綴0b(或0B)和0o(或0O)表示。 console.log(0b10...

    Dean 評(píng)論0 收藏0
  • ECMAScript6 特性——“變量解構(gòu)賦值”

    摘要:數(shù)組的解構(gòu)賦值允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)。如果變量名與屬性名不一致,必須寫成下面這樣。 1 數(shù)組的解構(gòu)賦值 ES6允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)(Destructuring)。 基本用法 { var [a,[b,c],d,,...f] = [1,[2,3],4,5,6,7]; console...

    Eric 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<