From 2e2992983988ea44ef9cbd93a9185eb6856a9811 Mon Sep 17 00:00:00 2001 From: meng Date: Thu, 6 Sep 2018 16:35:58 +0800 Subject: [PATCH 1/4] fix typo in chapter1.md --- chapter1.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chapter1.markdown b/chapter1.markdown index d9ff15a..85135c3 100644 --- a/chapter1.markdown +++ b/chapter1.markdown @@ -44,7 +44,7 @@ JavaScript 是一门面向对象的编程语言,对于那些仓促学习JavaSc 在任何语言中,最简单的操作莫过于定义变量。那么,在JavaScript中定义变量的时候,其实也在和对象打交道。首先,变量自动变为一个被称作“活动对象”的内置对象的属性(如果是全局变量的话,就变为全局对象的属性)。第二,这个变量实际上也是“伪对象”,因为它有自己的属性(属性特性),用以表示变量是否可以被修改、删除或在for-in循环中枚举。这些特性并未在ECMAScript3中作规定,而ECMAScript5中提供了一组可以修改这些特性的方法。 -那么,到底什么是对象?对象能作这么多事情,那它们一定非常特别。实际上,对象是及其简单的。对象只是很多属性的集合,一个名值对的列表(在其他语言中可能被称作关联数组),这些属性也可以是函数(函数对象),这种函数我们称为“方法”。 +那么,到底什么是对象?对象能作这么多事情,那它们一定非常特别。实际上,对象是极其简单的。对象只是很多属性的集合,一个名值对的列表(在其他语言中可能被称作关联数组),这些属性也可以是函数(函数对象),这种函数我们称为“方法”。 关于对象还需要了解,我们可以随时随地修改你创建的对象(当然,ECMAScript5中提供了可阻止这些修改的API)。得到一个对象后,你可以给他添加、删除或更新成员。如果你关心私有成员和访问控制,本书中我们也会讲到相关的编程模式。 @@ -110,7 +110,7 @@ JavaScript语言的核心部分(不包含DOM、BOM和外部宿主对象)是 本书不会讨论ES5新增特性相关的模式,因为在本书截稿时并没有任何浏览器实现了ES5,但本书的示例代码通过一些技巧鼓励开发者向新标准转变: -- 确保所提供的示例代码在严格模式下不包错 +- 确保所提供的示例代码在严格模式下不报错 - 避免使用并明确指出弃用的构造函数相关的属性和方法,比如arguments.callee - 针对ES5中的内置模式比如Object.create(),在ES3中实现等价的模式 From 2005b11664503254cceaef3448698568986c4fc5 Mon Sep 17 00:00:00 2001 From: mozjiang Date: Sun, 9 Sep 2018 21:06:33 +0800 Subject: [PATCH 2/4] fix typo in chapter2.md --- chapter2.markdown | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/chapter2.markdown b/chapter2.markdown index e4516e8..e6fc232 100644 --- a/chapter2.markdown +++ b/chapter2.markdown @@ -167,7 +167,7 @@ JavaScript 使用函数来管理作用域,在一个函数内定义的变量称 你可以使用一个var语句来声明多个变量,变量之间用逗号分隔。也可以在这个语句中加入变量的初始化,这是一个非常好的实践。这种方式可以避免逻辑错误(所有未初始化的变量都被声明了,且值为undefined)并增加了代码的可读性。过段时间后再看这段代码,你会体会到声明不同类型变量的惯用名称,比如,你一眼就可看出某个变量是对象还是整数。 -你可以在声明变量时多做一些额外的工作,比如在这个例子中就写了sum=a+b这种代码。另一个例子就是当代码中用到对DOM元素时,你可以把对DOM的引用赋值给一些变量,这一步就可以放在一个单独的声明语句中,比如下面这段代码: +你可以在声明变量时多做一些额外的工作,比如在这个例子中就写了sum=a+b这种代码。另一个例子就是当代码中用到DOM元素时,你可以把对DOM的引用赋值给一些变量,这一步就可以放在一个单独的声明语句中,比如下面这段代码: function updateElement() { var el = document.getElementById("result"), @@ -424,14 +424,14 @@ for-in 循环用于对非数组对象作遍历。通过for-in进行循环也被 - 每个case中的代码整齐缩进 - 每个case都以break作为结束 - 避免连续执行多个case语句块(当省略break时会发生),如果你坚持认为连续执行多case语句块是最好的方法,请务必补充文档说明,对于其他人来说,这种情况看起来是错误的。 -- 以default结束整个switch,以确保即便是在找不到匹配项时也会有正常的结果, +- 以default结束整个switch,以确保即便是在找不到匹配项时也会有正常的结果。 ## 避免隐式类型转换 在JavaScript的比较操作中会有一些隐式的数据类型转换。比如诸如false == 0或""==0之类的比较都返回true。 -为了避免隐式类型转换造对程序造成干扰,推荐使用===和!===运算符,它们较除了比较值还会比较类型。 +为了避免隐式类型转换造对程序造成干扰,推荐使用===和!===运算符,它们除了比较值还会比较类型。 var zero = 0; if (zero === false) { @@ -529,7 +529,7 @@ eval()和Function构造函数还有一个区别,就是eval()可以修改作用 确立并遵守编码规范非常重要,这会让你的代码风格一致、可预测、可读性更强。团队新成员通过学习编码规范可以很快进入开发状态、并写出团队其他成员易于理解的代码。 -在开源社区和邮件组中关于编码风格的争论一直不断(比如关于代码缩进,用tab还是空格?)。因此,如果你打算在团队内推行某种编码规范时,要做好应对各种反对意见的心理准备,而且要吸取各种意见,这对确立并一贯遵守某种编码规范是非常重要,而不是斤斤计较的纠结于编码规范的细节。 +在开源社区和邮件组中关于编码风格的争论一直不断(比如关于代码缩进,用tab还是空格?)。因此,如果你打算在团队内推行某种编码规范时,要做好应对各种反对意见的心理准备,而且要吸取各种意见,这对确立并一贯遵守某种编码规范非常重要,而不是斤斤计较地纠结于编码规范的细节。 ### 缩进 @@ -724,8 +724,6 @@ JavaScript中没有类,但有构造函数,可以通过new来调用构造函 那么对于那些不是函数的变量应当如何命名呢?变量名通常采用小驼峰式命名,还有一个不错的做法是,变量所有字母都是小写,单词之间用下划线分隔,比如,first_name,favorite_bands和old_company_name,这种方法可以帮助你区分函数和其他标识符——原始数据类型或对象。 -ECMAScript的属性和方法均使用Camel标记法,尽管多字的属性名称是罕见的(正则表达式对象的lastIndex和ignoreCase属性)。 - 在ECMAScript中的属性和方法均使用驼峰式命名,尽管包含多单词的属性名称(正则表达式对象中的lastIndex和ignoreCase)并不常见。 @@ -946,7 +944,7 @@ YUIDoc工具是语言无关的,只解析注释块,而不是JavaScript代码 写出易读的代码(或API),是指别人能轻易读懂程序的思路。所以你需要采用更好的思路来解决手头的问题。 -尽管我们认为“草稿”不甚完美,但至少也算“抱佛脚”的权宜之计,一眼看上去是有点“草”,不过也无所谓,特别是当你处理的是一个关键项目时(会有人命悬与此)。其实你应当扔掉你所给出的第一个解决方案,虽然它是可以正常工作的,但毕竟是一个草率的方案,不是最佳方案。你给出的第二个方案会更加靠谱,因为这时你对问题的理解更加透彻。第二个方案不是简单的复制粘贴之前的代码,也不能投机取巧寻找某种捷径。 +尽管我们认为“草稿”不甚完美,但至少也算“抱佛脚”的权宜之计,一眼看上去是有点“草”,不过也无所谓,特别是当你处理的是一个关键项目时(会有人命悬于此)。其实你应当扔掉你所给出的第一个解决方案,虽然它是可以正常工作的,但毕竟是一个草率的方案,不是最佳方案。你给出的第二个方案会更加靠谱,因为这时你对问题的理解更加透彻。第二个方案不是简单的复制粘贴之前的代码,也不能投机取巧寻找某种捷径。 ## 相互评审 From 288cdc07d88ca43398de23f62fdf7b2e5c538579 Mon Sep 17 00:00:00 2001 From: mozjiang Date: Mon, 10 Sep 2018 18:54:34 +0800 Subject: [PATCH 3/4] fix typo in chapter3.md --- chapter3.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/chapter3.markdown b/chapter3.markdown index f32a30e..8006472 100644 --- a/chapter3.markdown +++ b/chapter3.markdown @@ -227,7 +227,7 @@ Person构造函数是如何定义的呢?看下面的代码: console.log(typeof good_morning); // "undefined" console.log(window.tastes); // "yummy" -ECMAScript5中修正了这种非正常的行为逻辑。在严格模式中,this是不能指向全局对象的。如果在不支持ES5的JavaScript环境中,仍然后很多方法可以确保构造函数的行为即便在省略new调用时也不会出问题。 +ECMAScript5中修正了这种非正常的行为逻辑。在严格模式中,this是不能指向全局对象的。如果在不支持ES5的JavaScript环境中,仍然有很多方法可以确保构造函数的行为即便在省略new调用时也不会出问题。 ### 命名约定 @@ -475,7 +475,7 @@ JavaScript中的正则表达式也是对象,可以通过两种方式创建它 var re = /pattern/gmi; -使用正则表达式直接量可以让代码更加简洁高效,比如当调用String.prototype.prelace()方法时,可以传入正则表达式参数: +使用正则表达式直接量可以让代码更加简洁高效,比如当调用String.prototype.replace()方法时,可以传入正则表达式参数: var no_letters = "abc123XYZ".replace(/[a-z]/gi, ""); console.log(no_letters); // 123 @@ -572,7 +572,7 @@ JavaScript中有很多内置的Error构造函数,比如Error()、SyntaxError() **name** -name属性是指创建这个对象的构造函数的名字,通常是“Errora”,有时会有特定的名字比如“RangeError” +name属性是指创建这个对象的构造函数的名字,通常是“Error”,有时会有特定的名字比如“RangeError” **message** From c1462d8b875dd1ecc46f96b739a6aeccad3151b0 Mon Sep 17 00:00:00 2001 From: wonder Date: Tue, 8 Oct 2019 15:28:37 +0800 Subject: [PATCH 4/4] Update chapter2.markdown --- chapter2.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter2.markdown b/chapter2.markdown index e6fc232..667aa17 100644 --- a/chapter2.markdown +++ b/chapter2.markdown @@ -431,7 +431,7 @@ for-in 循环用于对非数组对象作遍历。通过for-in进行循环也被 在JavaScript的比较操作中会有一些隐式的数据类型转换。比如诸如false == 0或""==0之类的比较都返回true。 -为了避免隐式类型转换造对程序造成干扰,推荐使用===和!===运算符,它们除了比较值还会比较类型。 +为了避免隐式类型转换造对程序造成干扰,推荐使用===和!==运算符,它们除了比较值还会比较类型。 var zero = 0; if (zero === false) {