採用\uxxxx表示一個字符,xxxx表示字符的Unicode碼點,這個表示法只限於碼點在\u0000~\uFFFF之間的字符,超出範圍要用雙字節的形式表示git
"\u0061"; //a
"\uD842\uDFB7"; // "𠮷"
"\u20BB7"; // " 7",\u20BB是不可打印字符,顯示一個空格
// ES6對Unicode表示法的改進
"\u{20BB7}"; // "𠮷"
"\u{41}\u{42}\u{43}"; // "ABC"
複製代碼
ES6爲字符串添加了遍歷器接口es6
for (let item of 'foo') {
console.log(item)
}
// "f"
// "o"
// "o"
複製代碼
JavaScript 規定有5個字符,不能在字符串裏面直接使用,只能使用轉義形式。github
let message = `Hello World`;
複製代碼
要在模版字符串中使用反引號,可使用反斜槓轉義數組
let message = `Hello \` World`;
複製代碼
空格、縮緊、換行都被保留bash
let message = `
<ul>
<li>1</li>
<li>2</li>
</ul>
`;
複製代碼
若是你不想要這個換行,可使用trim方法消除它。函數
let message = `
<ul>
<li>1</li>
<li>2</li>
</ul>
`.trim();
複製代碼
模板字符串中嵌入變量,須要將變量名寫在${}之中。其實不止變量,任意的 JavaScript 表達式都是能夠的ui
let x = 1, y = 2;
let message = `<ul><li>${x}</li><li>${x + y}</li></ul>`;
console.log(message); // <ul><li>1</li><li>3</li></ul>
複製代碼
支持嵌套編碼
let arr = [{value: 1}, {value: 2}];
let message = `
<ul>
${arr.map((item) => {
return `
<li>${item.value}</li>
`
})}
</ul>
`;
console.log(message);
/*
<ul>
<li>1</li>
,
<li>2</li>
</ul>
*/
複製代碼
在 li 標籤中間多了一個逗號,這是由於當大括號中的值不是字符串時,會將其轉爲字符串,好比一個數組 [1, 2, 3] 就會被轉爲 1,2,3,逗號就是這樣產生的。能夠用join消除。spa
模板字符串之中還能調用函數code
function fn() {
return "Hello World";
}
console.log(`foo ${fn()} bar`); // foo Hello World bar
複製代碼
模板字符串能夠緊跟在一個函數名後面,該函數將被調用來處理這個模板字符串。稱爲標籤模板。
標籤模板其實不是模板,而是函數調用的一種特殊形式。「標籤」指的就是函數,緊跟在後面的模板字符串就是它的參數。
let x = 'Hi', y = 'Kevin';
var res = message`${x}, I am ${y}`;
console.log(res);
// 等同於
message(["",", I am ", ""],"Hi","Kevin");
複製代碼
message函數用來處理返回的字符串。
function message(literals, value1, value2) {
// ...
}
// 等同於
function message(literals, ...values){
//...
}
複製代碼
函數第一個參數爲數組,數組成員是模版字符串中沒有變量替換的部分。變量替換隻發生在數組的第一個成員以後。
靜態方法返回使用指定的代碼點序列建立的字符串。
參數: num1, ..., numN: 一串 Unicode 編碼位置,即「代碼點」。
返回值:使用指定的 Unicode 編碼位置建立的字符串。
console.log(String.fromCodePoint(9731, 9733, 9842, 0x2F804));
// expected output: "☃★♲你"
複製代碼
用來肯定一個字符串是否包含在另外一個字符串中
s.startsWith('Hello') // true
s.endsWith('!') // true
s.includes('o') // true
複製代碼
判斷一個字符串中是否包含在另外一個字符串,根據狀況返回true或false。
參數:
區分大小寫
判斷當前字符串是否以另一個給定的子字符串開頭,根據結果返回true或false。
參數:
判斷當前字符串是不是以另一個給定的子字符串「結尾」的,根據判斷結果返回 true 或 false。
參數:
構造並返回一個新字符串,該字符串包含被鏈接在一塊兒的指定數量的字符串的副本。
參數:count--介於0和正無窮大之間的整數 : [0, +∞) 。表示在新構造的字符串中重複了多少遍原字符串。參數若是是小數,會取整。
x'.repeat(3) // "xxx" 'hello'.repeat(2) // "hellohello" 'na'.repeat(0) // "" 'na'.repeat(2.9) // "nana" 複製代碼
用於字符串補全長度
用另外一個字符串填充當前字符串(重複,若是須要的話),以便產生的字符串達到給定的長度。填充從當前字符串的開始(左側)應用。
參數:
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
複製代碼
同上,填充從當前字符串末尾(右側)開始填充
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
複製代碼
trimStart() / trimLeft()方法移除原字符串左端的連續空白符並返回,方法並不會直接修改原字符串自己。
trimStart() / trimLeft()方法移除原字符串左端的連續空白符並返回,方法並不會直接修改原字符串自己。
const s = ' abc ';
s.trim() // "abc"
s.trimStart() // "abc "
s.trimEnd() // " abc"
複製代碼
摘自阮一峯