1.字串的遍歷器介面
es6為字串新增了遍歷器介面,使得字串可以被for…of
迴圈遍歷。
字串的遍歷:
for…of
與for
迴圈的區別:
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
會接受到value1
和value2
兩個引數。
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位置前的字元。用來搜尋引數字串...