From 03697778a6ef95b5d83f3257ab5ec72502b17216 Mon Sep 17 00:00:00 2001 From: waiting <1661926154@qq.com> Date: Sun, 24 Sep 2017 12:00:10 +0800 Subject: [PATCH 01/11] =?UTF-8?q?docs:=20=E8=A7=84=E6=A0=BC=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/intro.md b/docs/intro.md index cba96fb..37fb5e8 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -10,7 +10,7 @@ ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准, 该标准从一开始就是针对 JavaScript 语言制定的,但是之所以不叫 JavaScript,有两个原因。一是商标,Java 是 Sun 公司的商标,根据授权协议,只有 Netscape 公司可以合法地使用 JavaScript 这个名字,且 JavaScript 本身也已经被 Netscape 公司注册为商标。二是想体现这门语言的制定者是 ECMA,不是 Netscape,这样有利于保证这门语言的开放性和中立性。 -因此,ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript 和 ActionScript)。日常场合,这两个词是可以互换的。 +因此,ECMAScript 和 JavaScript 的关系是,前者是后者的规范,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript 和 ActionScript)。日常场合,这两个词是可以互换的。 ## ES6 与 ECMAScript 2015 的关系 From 99410abf6ebf7db6407e96ee16e2fbf323f175db Mon Sep 17 00:00:00 2001 From: waiting <1661926154@qq.com> Date: Sun, 24 Sep 2017 12:04:24 +0800 Subject: [PATCH 02/11] docs: use let/const --- docs/destructuring.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/destructuring.md b/docs/destructuring.md index 0e314ff..888a624 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -192,7 +192,7 @@ baz // undefined 如果变量名与属性名不一致,必须写成下面这样。 ```javascript -var { foo: baz } = { foo: 'aaa', bar: 'bbb' }; +let { foo: baz } = { foo: 'aaa', bar: 'bbb' }; baz // "aaa" let obj = { first: 'hello', last: 'world' }; @@ -251,7 +251,7 @@ p // ["Hello", {y: "World"}] 下面是另一个例子。 ```javascript -var node = { +const node = { loc: { start: { line: 1, @@ -260,7 +260,7 @@ var node = { } }; -var { loc, loc: { start }, loc: { start: { line }} } = node; +let { loc, loc: { start }, loc: { start: { line }} } = node; line // 1 loc // Object {start: Object} start // Object {line: 1, column: 5} @@ -642,7 +642,7 @@ jQuery.ajax = function (url, { 任何部署了Iterator接口的对象,都可以用`for...of`循环遍历。Map结构原生支持Iterator接口,配合变量的解构赋值,获取键名和键值就非常方便。 ```javascript -var map = new Map(); +const map = new Map(); map.set('first', 'hello'); map.set('second', 'world'); From 5d9f3dd7734f802844082e1f8dad76e0ec2c0a20 Mon Sep 17 00:00:00 2001 From: waiting <1661926154@qq.com> Date: Sun, 24 Sep 2017 12:10:02 +0800 Subject: [PATCH 03/11] docs: use let/const instead of var --- docs/string.md | 86 +++++++++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) 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 = ` @@ -550,7 +550,7 @@ var template = ` ```javascript echo(''); 这个转换使用正则表达式就行了。 ```javascript -var evalExpr = /<%=(.+?)%>/g; -var expr = /<%([\s\S]+?)%>/g; +let evalExpr = /<%=(.+?)%>/g; +let expr = /<%([\s\S]+?)%>/g; template = template .replace(evalExpr, '`); \n echo( $1 ); \n echo(`') @@ -574,9 +574,9 @@ template = 'echo(`' + template + '`);'; 然后,将`template`封装在一个函数里面返回,就可以了。 ```javascript -var script = +let script = `(function parse(data){ - var output = ""; + let output = ""; function echo(html){ output += html; @@ -594,8 +594,8 @@ return script; ```javascript function compile(template){ - var evalExpr = /<%=(.+?)%>/g; - var expr = /<%([\s\S]+?)%>/g; + const evalExpr = /<%=(.+?)%>/g; + const expr = /<%([\s\S]+?)%>/g; template = template .replace(evalExpr, '`); \n echo( $1 ); \n echo(`') @@ -603,9 +603,9 @@ function compile(template){ template = 'echo(`' + template + '`);'; - var script = + let script = `(function parse(data){ - var output = ""; + let output = ""; function echo(html){ output += html; @@ -623,7 +623,7 @@ function compile(template){ `compile`函数的用法如下。 ```javascript -var parse = eval(compile(template)); +let parse = eval(compile(template)); div.innerHTML = parse({ supplies: [ "broom", "mop", "cleaner" ] }); //