diff --git a/docs/string.md b/docs/string.md index e2c6581..5b9375c 100644 --- a/docs/string.md +++ b/docs/string.md @@ -70,7 +70,7 @@ s.charCodeAt(1) // 57271 ES6提供了`codePointAt`方法,能够正确处理4个字节储存的字符,返回一个字符的码点。 ```javascript -var s = '𠮷a'; +let s = '𠮷a'; s.codePointAt(0) // 134071 s.codePointAt(1) // 57271 @@ -85,7 +85,7 @@ s.codePointAt(2) // 97 `codePointAt`方法返回的是码点的十进制值,如果想要十六进制的值,可以使用`toString`方法转换一下。 ```javascript -var s = '𠮷a'; +let s = '𠮷a'; s.codePointAt(0).toString(16) // "20bb7" s.codePointAt(2).toString(16) // "61" @@ -94,7 +94,7 @@ s.codePointAt(2).toString(16) // "61" 你可能注意到了,`codePointAt`方法的参数,仍然是不正确的。比如,上面代码中,字符`a`在字符串`s`的正确位置序号应该是1,但是必须向`codePointAt`方法传入2。解决这个问题的一个办法是使用`for...of`循环,因为它会正确识别32位的UTF-16字符。 ```javascript -var s = '𠮷a'; +let s = '𠮷a'; for (let ch of s) { console.log(ch.codePointAt(0).toString(16)); } @@ -153,7 +153,7 @@ for (let codePoint of 'foo') { 除了遍历字符串,这个遍历器最大的优点是可以识别大于`0xFFFF`的码点,传统的`for`循环无法识别这样的码点。 ```javascript -var text = String.fromCodePoint(0x20BB7); +let text = String.fromCodePoint(0x20BB7); for (let i = 0; i < text.length; i++) { console.log(text[i]); @@ -236,7 +236,7 @@ ES6 提供字符串实例的`normalize()`方法,用来将字符的不同表示 - **endsWith()**:返回布尔值,表示参数字符串是否在原字符串的尾部。 ```javascript -var s = 'Hello world!'; +let s = 'Hello world!'; s.startsWith('Hello') // true s.endsWith('!') // true @@ -246,7 +246,7 @@ s.includes('o') // true 这三个方法都支持第二个参数,表示开始搜索的位置。 ```javascript -var s = 'Hello world!'; +let s = 'Hello world!'; s.startsWith('world', 6) // true s.endsWith('Hello', 5) // true @@ -386,14 +386,14 @@ console.log(`string text line 1 string text line 2`); // 字符串中嵌入变量 -var name = "Bob", time = "today"; +let name = "Bob", time = "today"; `Hello ${name}, how are you ${time}?` ``` 上面代码中的模板字符串,都是用反引号表示。如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。 ```javascript -var greeting = `\`Yo\` World!`; +let greeting = `\`Yo\` World!`; ``` 如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。 @@ -439,8 +439,8 @@ function authorize(user, action) { 大括号内部可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性。 ```javascript -var x = 1; -var y = 2; +let x = 1; +let y = 2; `${x} + ${y} = ${x + y}` // "1 + 2 = 3" @@ -448,7 +448,7 @@ var y = 2; `${x} + ${y * 2} = ${x + y * 2}` // "1 + 4 = 5" -var obj = {x: 1, y: 2}; +let obj = {x: 1, y: 2}; `${obj.x + obj.y}` // "3" ``` @@ -470,7 +470,7 @@ function fn() { ```javascript // 变量place没有声明 -var msg = `Hello, ${place}`; +let msg = `Hello, ${place}`; // 报错 ``` @@ -533,9 +533,9 @@ func('Jack') // "Hello Jack!" 下面,我们来看一个通过模板字符串,生成正式模板的实例。 ```javascript -var template = ` +let template = `
${sender} has sent you a message.
`; function SaferHTML(templateData) { - var s = templateData[0]; - for (var i = 1; i < arguments.length; i++) { - var arg = String(arguments[i]); + let s = templateData[0]; + for (let i = 1; i < arguments.length; i++) { + let arg = String(arguments[i]); // Escape special characters in the substitution. s += arg.replace(/&/g, "&") @@ -777,8 +777,8 @@ function SaferHTML(templateData) { 上面代码中,`sender`变量往往是用户提供的,经过`SaferHTML`函数处理,里面的特殊字符都会被转义。 ```javascript -var sender = ''; // 恶意代码 -var message = SaferHTML`${sender} has sent you a message.
`; +let sender = ''; // 恶意代码 +let message = SaferHTML`${sender} has sent you a message.
`; message //<script>alert("abc")</script> has sent you a message.
@@ -797,7 +797,7 @@ i18n`Welcome to ${siteName}, you are visitor number ${visitorNumber}!` ```javascript // 下面的hashTemplate函数 // 是一个自定义的模板处理函数 -var libraryHtml = hashTemplate` +let libraryHtml = hashTemplate`