字串的擴充套件 ES6學習筆記

2021-09-29 21:54:50 字數 2584 閱讀 6598

1.字串的遍歷器介面

es6為字串新增了遍歷器介面,使得字串可以被for…of迴圈遍歷。

字串的遍歷:

for…offor迴圈的區別:

for…of可以識別大於0xffff的碼點,for迴圈無法識別大於0xffff的碼點。

let text = string.

fromcodepoint

(0x20bb7);

for(

let i of text)

// ?

for(

let i;i)// " "

// " "

上面的例子說明了,字串text只有乙個字元,但是for迴圈會認為它包含兩個字元(都不可列印),而for…of迴圈會正確識別出這乙個字元。

2.模板字串

模板字串(template string)是增強版的字串,相比於字串而言,模板字串使用更方便,而且用途多。用反引號( ` )標識,可以當成普通字串使用,還有很多其他用途

1.充當多行字串使用。

2.在模板字串總嵌入變數。( 將變數名寫在${}中 )

普通字串

let str1 =

`hello world`

;//str1 "hello world"

多行字串

let str2 =

`hello

world`

;// str2 "hello

// world"

模板字串中嵌入變數

let one =1;

let str3 =

`i am no.$`

;//str3 "i am no.1"

模板字串使用反引號( ` )標識,如果想在模板字串中使用反引號( ` ),要在前面加反斜槓( \ )轉義。

let str =

`hello \`world\``

; str //"hello `world`"

模板字串之中還能呼叫函式。

function

demo()

let str =

`hello $`

; str //"hello world"

規則:如果大括號中的值不是字串,將按照一般的規則轉為字串。比如,大括號中是乙個物件,將預設呼叫物件的tostring方法,將物件轉換為字串。

3.標籤模板

模板字串還有標籤模板的功能,它可以緊跟在乙個函式名後面,該函式將被呼叫來處理這個模板字串。這被稱為「標籤模板」功能(tagged template)。

alert`123`

// 等同於

alert

(123

)

標籤模板其實不是模板,而是函式呼叫的一種特殊形式。「標籤」指的就是函式,緊跟在後面的模板字串就是它的引數。

如果標籤字串中含有變數,會先將模板字串處理成多個引數,在呼叫函式。

let a =5;

let b =10;

tag`hello

$world $`

;// 等同於

tag(

['hello '

,' world ',''

],15,

50);

tag函式的第乙個引數是乙個陣列,該陣列的成員是模板字串中那些沒有變數替換的部分,也就是說,變數替換只發生在陣列的第乙個成員與第二個成員之間、第二個成員與第三個成員之間,以此類推。

tag函式的其他引數,都是模板字串各個變數被替換後的值。由於本例中,模板字串含有兩個變數,因此tag會接受到value1value2兩個引數。

tag函式所有引數的實際值如下。

第乙個引數:['hello ', 』 world ', 『』]

第二個引數: 15

第三個引數:50

我們可以按照需要編寫tag函式的**。下面是tag函式的一種寫法,以及執行結果。

let a =5;

let b =10;

function

tag(s, v1, v2)

tag`hello

$world $`

;// "hello "

// " world "

// ""

// 15

// 50

// "ok"

ES6學習筆記 字串擴充套件

這三個方法都支援第二個引數,表示開始搜尋的位置。var s hello world s.startswith world 6 true s.endswith hello 5 true s.includes hello 6 false返回乙個新字串,表示將原字串重複n次 x repeat 3 hell...

ES6中字串擴充套件

for.of 遍歷字串 例如 1 for let codepoint of string 執行結果 說明 三個方法都接收兩個引數,第乙個引數為檢索的值,第二個引數為檢索的起始位置,返回布林值 例如 1 let s hello world 23 const a,b,c 4 s.startswith h...

ES6學習筆記(三)之字串的擴充套件

es6新增 3 種用來確定乙個字串是否包含在另乙個字串中,這 3 個方法都有兩個引數 第乙個表示要進行搜尋的字串,第二個表示開始開始搜尋的位置 下標 返回值都為布林值。注 前兩個方法的搜尋位置是針對index位置到源字串結束位置之間的字元 最後乙個方法則是針對index位置前的字元。用來搜尋引數字串...