模板字符串:
1.模板字符串可以跟在函數后邊,函數會接收到若干參數,由模板字符串分解得到。
let a = 5; let b = 10; tag`Hello ${ a + b } world ${ a * b }`; // 等同於 tag(['Hello ', ' world ', ''], 15, 50);
第一個參數:['Hello ', ' world ', ''],第二個參數: 15,第三個參數:50,分解之后的內容包含空格。
2.這種標簽模板功能,函數的作用是可以直接獲取所有分解的參數,最后可以在函數內部過濾和拼接參數。例如可以過濾惡意<script>標簽防止攻擊,方法是將“<”">"轉換為>和<。
3.標簽模板還可以進行語言轉換(需要自己寫邏輯),通過標簽函數模擬大胡子語法,嵌入其他語言。
字符串新增方法:
1.fromCodePoint()方法,輸入unicode碼返回對應字符,可以識別0xFFFF以上字符,替代了fromCharCode()方法。如果方法內有多個參數則合並參數成一個字符串返回,方法建立在string對象上。
2.string.raw()方法,會返回原始值,例如/n這種換行符也會返回/n,意思也就是說raw方法會幫你轉義反斜杠,另外需要用模板字符串,如果用括號則參數為對象。打印結果時還需要注意,測試\時不能直接輸入單個反斜杠,否則會報錯,需要轉換反斜杠,即\\。
3.codePointAt()方法,正確處理大於0xFFFF的字符,即占位為4個字節的字符,並返回其對應的正確碼點。
4.normalize()方法,用於合成字符,如歐洲的一些字符,通過普通英文字母加音標合成。
5.includes(),startsWith(),endsWith().在ES6之前js只有indexOf()去確定一個字符串是否包含在另一個字符串里。includes()方法表示是否找到了字符串,返回布爾值;startsWith()表示是否在頭部,end表示尾部。三個方法都支持第二個參數,表示從什么開始找。
