• Unicode表示法
    • 模板字符串
    • String.prototype.fromCodePoint()
    • String.prototype.includes()
    • String.prototype.startsWith()
    • String.prototype.endsWith()
    • String.prototype.repeat() ```javascript { console.log(“a”, “\u0061”); // a a console.log(“s”, “\u20BB7”); // s ₻7

      console.log(“s”, “\u{20BB7}”); // s 𠮷 }

    { let s = “𠮷”; let s1 = “𠮷a”;

    1. // es5
    2. console.log("length", s.length); // length 2
    3. console.log("0", s.charAt(0)); // 0 �
    4. console.log("0", s.charAt(1)); // 0 �
    5. console.log("at0", s.charCodeAt(0)); // at0 55362
    6. console.log("at1", s.charCodeAt(1)); // at1 57271
    7. // es6
    8. console.log("length", s1.length); // length 3
    9. console.log("code0", s1.codePointAt(0)); // code0 134071
    10. console.log("code0", s1.codePointAt(0).toString(16)); // code0 20bb7
    11. console.log("code1", s1.codePointAt(1)); // code1 57271
    12. console.log("code2", s1.codePointAt(2)); // code2 97

    }

    { // es5 console.log(String.fromCharCode(“0x20bb7”)); // ஷ // es6 console.log(String.fromCodePoint(“0x20bb7”)); // 𠮷 }

    { let str = “\u{20bb7}abc”;

    1. // es5
    2. for (let i = 0; i < str.length; i++) {
    3. console.log("es5", str[i]);
    4. }
    5. // es5 �
    6. // es5 �
    7. // es5 a
    8. // es5 b
    9. // es5 c
    10. // es6
    11. for (let code of str) {
    12. console.log("es6", code);
    13. }
    14. // es6 𠮷
    15. // es6 a
    16. // es6 b
    17. // es6 c

    }

    { // includes():返回布尔值,表示是否找到了参数字符串。 // startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。 // endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。 let str = “string”; console.log(“includes”, str.includes(“r”)); // includes true console.log(“includes”, str.includes(“c”)); // includes false

    1. console.log("start", str.startsWith("str")); // start true
    2. console.log("end", str.endsWith("str")); // end false

    }

    { // repeat 方法返回一个新字符串,表示将原字符串重复n次。 let str = “abc”; console.log(str.repeat(2)); // abcabc console.log(‘na’.repeat(0);); // “”

    1. // 参数如果是小数,会被取整。
    2. console.log('na'.repeat(2.9)); // "nana"
    3. // 如果repeat的参数是负数或者Infinity,会报错。
    4. console.log('na'.repeat(Infinity)); // RangeError
    5. console.log('na'.repeat(-1)); // RangeError
    6. // but 如果参数是 0 到-1 之间的小数,则等同于 0,这是因为会先进行取整运算。0 到-1 之间的小数,取整以后等于-0,repeat视同为 0。
    7. console.log('na'.repeat(-0.9)); // ""
    8. // 参数NaN等同于 0。
    9. console.log('na'.repeat(NaN)); // ""
    10. // 如果repeat的参数是字符串,则会先转换成数字。
    11. console.log('na'.repeat('na')); // ""
    12. console.log('na'.repeat('3')); // "nanana"

    }

    { let name = “wuchendi”; let info = “hello world”; let m = i am ${name},${info}; console.log(m); // i am wuchendi,hello world }

    { // ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。 // padStart()用于头部补全,padEnd()用于尾部补全。 console.log(“1”.padStart(2, “0”)); // 01 console.log(“1”.padEnd(2, “0”)); // 10

    1. // 如果省略第二个参数,默认使用空格补全长度。
    2. console.log("1".padStart(4)); // " 1"
    3. console.log("1".padEnd(4)); // "1 "
    4. // 用途
    5. console.log("24".padStart(10,"YYYY-MM-DD")); // "YYYY-MM-24"
    6. console.log("09-24".padStart(10,"YYYY-MM-DD")); // "YYYY-09-24"

    }

    { // trimStart(),trimEnd() // ES2019 对字符串实例新增了trimStart()和trimEnd()这两个方法。它们的行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。 const s = “ abc “; console.log(s.trim()); // “abc”; console.log(s.trimStart()); // “abc “; console.log(s.trimEnd()); // “ abc”;

    }

    { // 标签模板 let user = { name: “wcd”, info: “hello world” }; console.log(abci am ${user.name},${user.info}); // i am ,,,wcdhello world function abc(s, v1, v2) { console.log(s, v1, v2); // [ ‘i am ‘, ‘,’, ‘’ ] ‘wcd’ ‘hello world’  return s + v1 + v2; } }

    { // String.raw 方法往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串。 console.log(String.rawHi\n${1 + 2}); // Hi\n3 console.log(Hi\n${1 + 2}); // Hi 3 } ```