ES6新增API:String篇(一)

forceddd發表於2021-12-03
  1. String.raw

    String.raw是一個模板字串的標籤函式(如果你不知道什麼是標籤函式,點⚑),它返回模板字串的原始字串。比如說\n不會被當成換行處理,而是被當做兩個普通字元\n

    console.log(String.raw`1\n2`); //1\n2

    通常,我們不需要把它當做普通函式來呼叫,但是如果你一定要把它當做普通函式呼叫的話,要注意傳入引數的格式:

    (template: {
        raw: readonly string[] | ArrayLike<string>;
    }, ...substitutions: any[])=>string

    String.raw的第一個引數必須是一個有raw屬性的物件,該屬性值為字元陣列或者字元類陣列,剩餘引數就是插入的值。

    console.log(String.raw({ raw: 'abcd' }, 0, 1, 2)); //a0b1c2d
    //3 4兩個插值超出了模板陣列的範圍,會被忽略
    console.log(String.raw({ raw: ['a', 'b', 'c', 'd'] }, 0, 1, 2, 3, 4)); //a0b1c2d
  1. String.prototype.repeat

    函式型別:

    (count?:number)=>string

    repeat函式會根據傳入的引數n,返回一個原字串重複了n次的新字串,引數n預設為0

    //傳入0或者不傳引數時,原字串重複0次,返回空字串
    console.log('a'.repeat(0));// ''
    console.log('a'.repeat(2));// 'aa'
  2. String.prototype.startsWith,String.prototype.endsWith,String.prototype.includes

    函式型別:

    (queryString?:string,startPosition?:number)=>boolean

    startsWithendsWidthincludes函式都是ES6新增的用於檢查字串的函式,它們接收兩個引數,第一個引數queryString是要在原字串中查詢的字串,第二個引數startPostion是開始查詢的位置。在includesstartsWith中,startPosition預設值為0,在endsWith中,startPostion預設為原字串length

    console.log('abcde'.includes('a')); //true
    //改變起始位置
    console.log('abcde'.includes('a', 1)); //false
    console.log('abcde'.startsWith('a')); //true
    //改變起始位置
    console.log('abcde'.startsWith('a', 1)); //false
    
    console.log('abcde'.endsWith('a')); //false
    //改變起始位置
    console.log('abcde'.endsWith('a', 1)); //true

    要注意的是,當要檢查的字串,即引數queryString空字串''時,這三個函式的返回結果始終為true

    console.log('abcde'.includes('')); //true
    //改變起始位置
    console.log('abcde'.includes('', 1)); //true
    console.log('abcde'.startsWith('')); //true
    //改變起始位置
    console.log('abcde'.startsWith('', 1)); //true
    console.log('abcde'.endsWith('')); //true
    //改變起始位置
    console.log('abcde'.endsWith('', 1)); //true

相關文章