找茬来了!
2016-05-14
正在阅读中,提交给图灵社区的勘误一直没人理,贴这里先。
第18次印刷版本,18页中部加黑的代码块少一个</p>标签。
第29页注释,经验证应该原书说的是对的,任何数值除以非数值都会返回NaN。
45页,逻辑与操作规则的最后3条,涉及到null、NaN和undefined,书中说只要有都返回这三个值,但经过验证这是不对的,&&遵循的是短路原则,null、NaN和undefined出现在右边时如果左侧的值是false则不成立。如
""&&NaN; //""
false&&null; //false
0&&undefined; //0
第58,59两页,讲解break和continue的示例代码中,说循环分别执行了4次和8次表述不准确,只是num++分别执行了4次和8次而已,循环执行的次数不好说,第一个执行到了第5次跳出,第二个执行到了第10次跳出(在执行第5次循环时执行了contine)。
第115页第一行,图灵社区给出了第20次印刷的勘误。
115 正文第一行“它引用了this对象。”->“this引用了window对象。”
这一条勘误是错的,对照英文原文理解的意思,在定义时这个函数引用了this对象,而函数在没有调用的情况下,this的具体指代那个对象是不明确的,所以原来中文的意思才是准确的,按照以上那条勘误修改之后的语句意思就有问题了。
第119页中部。“而且所有基本包装类型的对象都会被转换为布尔值true。”翻译有歧义,对照原文,更准确的翻译应为,“而且所有基本包装类型的对象在转换成布尔类型时值都是true。”
第126页,6,字符串的模式匹配方法一节中match()方法的返回值,只有当正则表达式没有g标志时,返回值才和RegExp的exec()方法相同,如果正则表达式包含 g 标志,则该方法返回一个包含所有匹配结果的数组。如果没有匹配到,则返回 null。测试代码:
var reg=/.at/g,text="bat cat dat eat";
var match1=reg.exec(text),match2=text.match(reg);
console.log(match1);
// ["bat", index: 0, input: "bat cat dat eat"]
console.log(match2);
// ["bat", "cat", "dat", "eat"]
参考;https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/match
第140页最后一段,“在调用Object.defineProperty()方法时,如果不指定,configurable,enumerable和writable特性的默认值都是false”,表述有误,正确表述是:在调用Object.defineProperty()方法创建一个新的属性时,如果不指定,configurable,enumerable和writable特性的默认值都是false,如果调用Object.defineProperty()方式只是修改已经定义的属性的特性,则无此限制。
参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty